memcached

Jmeter学习笔记--dubbo接口调试

假装没事ソ 提交于 2020-05-08 04:01:35
1、jmeter安装插件: jmeter-plugins-dubbo 将下载的插件安装到jmeter的 \lib\ext 目录下(jmeter的默认下载的三方插件都是安装在这个目录下的) 2、安装完后启动jmeter(我使用的是5.1版本) 添加线程组---添加取样器(Dubbo Sample) 参数说明: Protocol: 注册协议,包括zookeeper、Redis等; Address: dubbo服务的IP:端口;当使用zk,address填入zk地址,集群地址使用","分隔;使用dubbo直连,address填写直连地址和服务端口; Group: 分组,没有可以不填 Interface:包名和接口名 ;插件很赞👍,不需要自己去找了,配置好服务的IP和端口,直接点击Get Provider list 按钮,就会把该服务下开发所有的包名加接口名还有方法名以列表的方式show出来,下拉选择自己要测试的接口就OK了 Method: 选择完前面的Interface后,method就可以选择该接口下的所有方法名 Protocol: 使用的dubbo协议,包括dubbo、webservice、memcached、redis,根据自己的协议类型选择对应的选项即可; Timeout: 请求超时时间(ms) Version: 版本;这里有坑,不同版本之间的调用可能会有问题,我直接没填版本号

php.ini配置文件参数优化

可紊 提交于 2020-05-07 11:56:32
用于生产环境中的PHP需要对其进行优化,让PHP自身发挥更好的性能,除了写好PHP代码,还要配置好php-fpm以及php.ini调优。本文从内存、OPcache、上传、会话以及安全等方面讲解php.ini的配置调优。 内存优化 运行 PHP 时需要关心每个 PHP 进程要使用多少内存,php.ini 中的 memory_limit 设置用于设定单个 PHP 进程可以使用的系统内存最大值。 这个设置的默认值是 128M,这对于大多数中小型 PHP 应用来说或许合适,不过,如果运行的是微型 PHP 应用,可以降低这个值,以便节省系统资源,反之,如果运行的是内存集中型 PHP 应用,可以增加这个值。这个值的大小由可用的系统内存决定,确定给 PHP 分配多少值是一门艺术,决定给 PHP 分配多少内存,以及能负担起多少个 PHP-FPM 进程时,可以根据以下维度信息进行判断: 一共可以分配给 PHP 多少内存?以一个 2G 内存的 VPS 为例,这台设备中可能还运行了其他进程,如 MySQL、Nginx 等,那么留 512M 给 PHP 是合适的。 每个 PHP 进程平均耗费多少内存?这个要监控进程的内存使用量,可以使用命令行命令top,也可以在 PHP 脚本中调用 memory_get_peak_usage() 函数,不管使用哪种方式,都要多次运行同一个脚本,然后取内存消耗的平均值。

015.数据分布算法:hash+ 一致性 hash + redis cluster 的 hash slot

瘦欲@ 提交于 2020-05-06 00:28:38
[toc] 讲解分布式数据存储的核心算法,数据分布的算法 hash 算法 -> 一致性 hash 算法(memcached) -> redis cluster 的 hash slot 算法 用不同的算法,就决定了在多个 master 节点的时候,数据如何分布到这些节点上去,解决这个问题 看到这里的时候,已经明白了,可能是通过 key 去路由到多个 master 上的 redis cluster 介绍 自动将数据进行分片,每个 master 上放一部分数据 提供内置的高可用支持,部分 master 不可用时,还是可以继续工作的 在 redis cluster 架构下,每个 redis 要放开两个端口号,比如一个是 6379,另外一个就是加 10000 的端口号,比如 16379 16379 端口号是用来进行节点间通信的,通过 cluster bus(集群总线)。cluster bus 的通信是用来进行故障检测,配置更新,故障转移授权 cluster bus 用了另外一种二进制的协议,主要用于节点间进行高效的数据交换,占用更少的网络带宽和处理时间 最老土的 hash 算法和弊端(大量缓存重建) 的确它的最大弊端就是,增加或者减少节点的时候,基本上所有数据都要重建路由 一致性 hash 算法(自动缓存迁移)+ 虚拟节点(自动负载均衡) 优点:自动缓存迁移 缺点:缓存热点问题 一致性

数据库学习之一:数据库介绍

天大地大妈咪最大 提交于 2020-05-05 10:07:51
一、数据库介绍 1、关系型数据库的特点 ​ 二维表 典型产品Oracle传统企业,MySQL是互联网企业 数据存取是通过SQL 最大特点,数据安全性方面强(ACID) 2、NoSQL:非关系型数据库(Not only SQL) ​ 不是否定关系型数据库,做关系型数据库的的补充。 3、web1.0时代 ​ 企业提供内容,用户浏览,所以关系型数据库够用,并发并不高,所以不需要NoSQL。 4、web2.0时代 ​ 核心是企业提供平台,用户参与提供内容。这时关系型数据库无法满足需求了。 5、2003 NoSQL出现 ​ memcached诞生,关注的点是性能,而安全性关注比较低。随着安全性需求不断提升,所以有了redis。 6、redis特点 ​ 依然高性能该并发, ​ 数据持久化的功能 ​ 支持多数据类型,主从复制和集群 ​ 管理不再使用SQL了 7、NoSQL特性总览: ​ 不是否定关系型数据库,而是作为补充,现在也有部分替代的趋势。 ​ 关注高性能,高并发,灵活性,忽略和上述无关的功能。 ​ 现在也在提升安全性和使用功能。 ​ 典型产品:Redis(持久化缓存,两个半天)、MongoDB(最接近关系型数据的NoSQL)、Memcached。 ​ 管理不适用SQL管理,而是用一些特殊的API或数据接口。 8、NoSQL的分类、特点、典型产品 ​ 键值(KV)存储:Memcached

服务端压测怎么做

送分小仙女□ 提交于 2020-05-04 09:26:38
本文始发自博客:[ 服务端压测怎么做 ]( https://zingpho y.github.io/2020/04/26/%E6%9C%8D%E5%8A%A1%E7%AB%AF%E5%8E%8B%E6%B5%8B%E6%80%8E%E4%B9%88%E5%81%9A/) 博文的内容并不都是我原创的,行文思路来源于一次内部分享,再结合网上众多参考资料总结出来的,算是一个学习笔记。 可能很多QA、RD同学跟我都一样,对服务端压测一直没有系统的认知,印象停留在使用压测工具如Jmeter对单接口发压,调整线程数和循环数来制造不同压力,最后计算一下TPS和成功率等就完事了?网上虽然有不少压测相关的文章,但多数是压测工具的入门级使用,有的是压测流程和指标的简单解释,或者就是几个大厂牛逼的全链路压测能力和压测平台的介绍。这些文章要不缺少系统性阐述,要不过于抽象不好理解,对没怎么接触过压测的同学不太友好。 本文尝试在QA角度梳理一次完整的压测过程,尝试总结更为普适的压测思路,给大家提供更有意义的参考。 压测背景 测试分很多种,网上很多文章 [1] 会玩弄概念,搬出来3个名词:压力测试(Stress Testing)、性能测试(Performance Testing)、负载测试(Load Testing)。一般情况下并不需要做这么细粒度的概念区分,这3个概念我觉得是没办法完整区分各自边界的

openstack-on-centos7之环境准备

别来无恙 提交于 2020-05-02 16:58:25
centos7配置静态ip ifconfig查看网卡信息并获取到网卡的名称eth0s3 ifconfig 进入到网卡配置目录 cd /etc/sysconfig/network-scripts/ 找到步骤1中的eth0s3的配置文件,编辑 vim ifcfg-eth0s3 重启网卡 systemctl restart network.service ifconfig再次查看网卡信息并获取到网卡的名称eth0s3 ping其他主机或者pingwww.baidu.com等都能ping通了 编辑etc/hosts,ip地址映射 vim /etc/hosts 修改主机名,修改完需要重启 vim /etc/hostname 网络时间协议(NTP [控制节点安装NTP] # yum install chrony (安装软件包) # vi /etc/chrony.conf server NTP_SERVER iburst 将原本servcer注释掉,增加这行 # systemctl enable chronyd.service (设置为系统自启动) # systemctl enable chronyd.service (启动NTP) [计算节点安装NTP] # yum install chrony (安装软件包) # vi /etc/chrony.conf server controller

Django 最好的缓存memcached的使用

六眼飞鱼酱① 提交于 2020-05-02 16:55:37
1.缓存的简介 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作,都会消耗很多的服务端资源,所以必须使用缓存来减轻后端服务器的压力. 缓存是将一些常用的数据保存内存或者memcache中,在一定的时间内有人来访问这些数据时,则不再去执行数据库及渲染等操作,而是直接从内存或memcache的缓存中去取得数据,然后返回给用户. 2.Django提供了6种缓存方式 开发调试缓存 内存缓存 文件缓存 数据库缓存 Memcache缓存(使用python-memcached模块) Memcache缓存(使用pylibmc模块) 经常使用的有文件缓存和Mencache缓存 2.1 各种缓存方式的配置文件说明 2.1.1 开发调试(此模式为开发调试使用,实际上不执行任何操作) settings.py文件配置 ? 1 2 3 4 5 6 7 8 9 10 CACHES = { 'default' : { 'BACKEND' : 'django.core.cache.backends.dummy.DummyCache' , # 缓存后台使用的引擎 'TIMEOUT' : 300 , # 缓存超时时间(默认300秒,None表示永不过期,0表示立即过期) 'OPTIONS'

Redis缓存雪崩,缓存穿透,热点key解决方案和分析

£可爱£侵袭症+ 提交于 2020-05-02 11:59:36
缓存穿透 缓存系统,按照KEY去查询VALUE,当KEY对应的VALUE一定不存在的时候并对KEY并发请求量很大的时候,就会对后端造成很大的压力。 (查询一个必然不存在的数据。比如文章表,查询一个不存在的id,每次都会访问DB,如果有人恶意破坏,很可能直接对DB造成影响。) 由于缓存不命中,每次都要查询持久层。从而失去缓存的意义。 解决方法: 1、缓存层缓存空值。 –缓存太多空值,占用更多空间。(优化:给个空值过期时间) –存储层更新代码了,缓存层还是空值。(优化:后台设置时主动删除空值,并缓存把值进去) 2、将数据库中所有的查询条件,放到布隆过滤器中。当一个查询请求来临的时候,先经过布隆过滤器进行检查,如果请求存在这个条件中,那么继续执行,如果不在,直接丢弃。 备注: 比如数据库中有10000个条件,那么布隆过滤器的容量size设置的要稍微比10000大一些,比如12000. 对于误判率的设置,根据实际项目,以及硬件设施来具体决定。但是一定不能设置为0,并且误判率设置的越小,哈希函数跟数组长度都会更多跟更长,那么对硬件,内存中间的要求就会相应的高。 private static BloomFilter<Integer> bloomFilter = BloomFilter.create(Funnels.integerFunnel(), size, 0.0001);

PHP扩展memcached、memcache对比-2019.05.11

半腔热情 提交于 2020-05-02 06:35:51
###背景 此文是之前开发过程中,出于对版本更新的疑问,以及新版本解决了什么问题的一个回答,简单总结交流。 我们在业务中广泛使用memcache做缓存,我们都了解memcached本身不支持分布式,业务上会使用客户端分布式算法(一致性hash)保证分布式缓存集群性能和可用性。客户端将多个mc实例维护成一个缓存池,根据缓存key值进行一致性hash计算,写入具体指定的hash节点。由于单机可用性无法保证,若要体现此mc集群的高可用,对于单点故障机器的剔除就十分重要。但目前框架内使用的memcached扩展(也是行业内一致推荐的扩展)却没能很好的完成这一功能(或者是设置上没有正确设置),当集群中一个实例挂掉之后,hash到这台机器上的set、get方法全部失效,没有保证集群的可用。而memcache扩展在出现单节点挂掉的情况下,会把key路由到新的alive节点上,保证集群的可用性。那么问题就来了,为什么在更“新”,更“先进”的memcached扩展内却没有完成如此好特性?是有坑?还是实现上会有问题?值得深究一番。 ###参考资料 《memcached - PHPClientComparison.wiki》 《Memcache 和 Memcached 客户端的区别》 《Memcached集群/分布式的单点故障》 ###正文 几篇博文里都说memcache有缺陷,总结一下核心缺陷:

Java开发人员怎么面试 常见Redis面试题有哪些

こ雲淡風輕ζ 提交于 2020-05-01 07:49:54
  Java开发人员怎么面试?常见Redis面试题有哪些?Redis是目前各大企业都在使用的人们技术,也是企业选拔人才时考核的一个难题。有很多同学只是简单了解Redis的应用,但对于为什么要用Redis以及企业面试中有关Redis的问题却答不上来。接下来千锋就给大家简单分析一下。   为什么使用Redis?   项目中使用Redis,主要考虑性能和并发两个方面。在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这个时候,就需要使用Redis做一个缓冲操作,让请求先访问到Redis,而不是直接访问数据库。不过,Redis也有慢查询操作。根据交互效果的不同,响应时间没有固定标准。在理想状态下,我们的页面跳转需要在瞬间解决,对于页内操作则需要在刹那间解决。   Redis的数据类型有哪些?   数据类型:   1)String:一般做一些复杂的计数功能的缓存;   2)Hash:存储二维数据或对象;   3)List:可实现队列,栈及有序的数据存储;   4)Set:常用于黑名单,微信抽奖等功能,应用场景多变;   5)SortedSet:做排行榜应用,取TOPN操作;延时任务;做范围查找。   Redis持久化机制是什么?   Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保证数据持久化