Nginx HttpMemcModule和直接访问memcached效率对比测试

  • 测试环境:
  1. 测试客户机A: HP DL380G4,2个双核CPU,4G Ram,2块10k RPM SAS盘做raid 1,ext3
  2. Nginx所在服务器B:DELL R710,E5620 * 2,32G Ram,6块盘15K RPM SAS盘做raid 1+0,xfs
  3. Memcached所在服务器C:DELL R710,E5620 * 2,32G Ram,6块盘15K RPM SAS盘做raid 5,ext4
  4. Nginx设置:keepalive 8192
  5. Php fpm设置:listen.backlog = -1
  6. memcached启动参数:memcached -d -m 24576 -p 12000 -c 10240
  7. 内核参数:
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_timestamps = 1

关于这几个内核参数对应的解释可参考资料:2.12. Reduce TCP performance spikes

  • 测试方案:
  1. 使用php连接本地nginx代理,存取远程memcached数据;
  2. 使用php直接连接远程memcached服务器;
  3. 从测试客户端用ab发起并发测试;
  4. 并发线程从64开始,直到2048,分别是64的N倍;
  5. 每种并发模式都进行5轮测试,最后取平均值;
  6. 存储在memcached中的key长度96个字符,value长度400字符,总是随机生成;
  • 测试结果:

  

  

结论及建议:

  1. Php程序通过HttpMemcMC访问memcache和直接访问memcached的效率并没有太多损失;
  2. 采用php直接访问memcached,失败的次数相比通过HttpMemcMC有较大增加,应该是HttpMemcMC在keepalive方面更有优势;
  3. 后续会在进行一次测试,调整nginx、php及内核相关参数,再做对比;
  4. 本次测试没有和正常的http请求混在一起对比,测试结果不具备绝对参考价值;

单从本次测试结果来看,HttpMemcMC值得拥有 :)

  • 结果结果更新:

调整上述几个内核参数:

net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_timestamps = 1

通过调整内核参数,调整tcp连接复用性提高tcp效率,新的测试结果如下:

       

备注:由于2次测试案例中,每并发线程请求数不一样,所以你会发现两边的数据无法直接对比,这是我的失误,抱歉。

  • 补充小结:

调整完内核后:
1. 可以发现,HttpMemc的平均效率只有NativeMC 72.62%;
2. 调整内核tcp参数对提升tcp效率非常有帮助,Failed requests次数完全为0;
3. 由于可以提高memcached连接复用率以及对程序透明的好处,即便HttpMemc性能不如NativeMC,损失并不是非常厉害,仍然是可以接受的;

--------------------------------------分割线--------------------------------------

知数堂 (http://zhishuedu.com)培训是由资深MySQL专家叶金荣、吴炳锡联合推出的专业优质培训品牌,主要有MySQL DBA实战优化和Python运维开发课程,是业内最有良心、最有品质的培训课程。

时间: 2024-10-10 02:47:58

Nginx HttpMemcModule和直接访问memcached效率对比测试的相关文章

memcached演练(2) 访问memcached服务

通过上节<memcached演练(1) 搭建memcached服务>,已经成功在linux虚拟机上安装了memcached服务,并设置了自启动. STAT version 1.4.29 Mem:          1891 主要内容 使用telnet命令行工具,操作memcached服务 使用java spymemcached工具访问memcached服务 监控插入不同数据量的数据,响应时间 监控memcached主机繁忙&清闲对比情况 调整memcached的内存指标,插入相同的数据

#Memcached系列#(6)使用Enyim.Caching访问Memcached的一个C#控制台程序

这篇文章主要是通过Enyim.Caching来完成访问Memcached. 这篇文章标为"原创",其实,是从多个地方整合过来的内容:但觉得"转载"也不合适,也并不是完全照搬别人的东西. 参考网址(不过,感觉它的配置写的乱糟糟的):http://www.cnblogs.com/luyinghuai/archive/2008/08/28/1278200.html (1)首先下载EnyimMemcached(文件名:EnyimMemcached-master.zip).

设置nginx禁止IP直接访问,只能通过指定的域名访问

设置配置文件disableip.conf: server {     listen 80;     server_name _;     return500; } 这是最终使用的配置文件,也是网上找到的常见的配置之一,最初该conf文件在sites-available文件夹下,尝试使用各种参数均无法正常工作,最终尝试将disableip.conf文件放入conf.d文件夹下,这是因为在nginx.conf文件中: include /etc/nginx/conf.d/*.conf; include

nginx 设置网站目录访问验证方法【转载】

为网站目录设置访问验证之后我们就是进入此页面都需要输入验证密码才可以,下面我来介绍nginx中配置目录访问验证码方法总结. 1.创建类htpasswd文件 执行:  代码如下 复制代码 wget -c soft.vpser.net/lnmp/ext/htpasswd.sh;bash htpasswd.sh 按提示输入用户名.密码.及认证文件名.脚本会自动生成认证文件.记录下脚本返回的文件路径.如:/usr/local/nginx/conf/vpser.net.auth. 2.为Nginx添加au

nginx版本隐藏以及访问状态

1:nginx版本隐藏之前访问 [email protected] conf]# curl -I http://www.zxl.com HTTP/1.1 200 OK Server: nginx/1.8.0 Date: Sat, 19 Dec 2015 14:07:29 GMT Content-Type: text/html Content-Length: 44 Last-Modified: Fri, 18 Dec 2015 05:23:18 GMT Connection: keep-alive

centos7 nginx图片 服务器可以访问ftp用户上传的图片资源的配置

注:本文参考了csdn:JAVA_DIRECTION的<nginx和ftp搭建图片服务器>一文.在实践中其文在centos7中还是存在缺陷性的 一:前提条件:是成功的安装好了ftp服务器和nginx服务器:如果没有安装敬请参考<CentOS7 搭建FTP服务器>和 <centos7_ linux : Nginx安装手册> 二:开放ftpuser用户主目录的其他用户的访问权限: 1 [[email protected] home]# chmod -R 777 ftpuse

【转】Linux下nginx配置https协议访问的方法

一.配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module 查看nginx编译参数:/usr/local/nginx/sbin/nginx -V 如下所示: configure arguments: --prefix=/usr/local/nginx --with-google_perftools_module --without-http_memcached_module --user=www --group=www --

Nginx通过LUA脚本访问RabbitMQ消息队列

发现了一个Nginx的LUA脚本:lua-resty-rabbitmqstomp,可以让Nginx通过LUA脚本访问RabbitMQ消息队列,这个脚本是通过stomp协议连接RabbitMQ的stomp适配器,来pub/sub消息的 关于RabbitMQ-STOMP安装使用相关内容可以参见:RabbitMQ STOMP Adapter 关于Nginx-LUA模块安装使用参见:LAMP架构演进到LAMPGC,再演进到LNMLGC 关于STOMP协议相关资料参见这里: STOMP官方英文协议1.1版

[Linux]Nginx + Node.js + PM2 + MongoDb + (Memcached) Part I

运行环境: 在本地的VirtualBox下运行的Ubuntu 14.04 LTS  0. 查看一下Server的IP地址 ifconfig 我的Server IP是192.168.0.108 1. 安装Nginx    首先更新 APT 包管理 ,然后安装Nginx sudo apt-get update sudo apt-get install nginx 然后重启一下本地的 Nginx的服务 service nginx restart 然后在浏览器 键入192.168.0.108 应该可以看