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

测试环境:

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

内核参数:

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

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

测试方案:

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

测试结果:

  

  

结论及建议:

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

结果结果更新:

调整上述几个内核参数:

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

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

      

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

补充小结:

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

(0)

相关推荐

  • 编写Go程序对Nginx服务器进行性能测试的方法

    目前有很多提供Go语言HTTP应用服务的方法,但其中最好的选择取决于每个应用的实际情况.目前,Nginx看起来是每个新项目的标准Web服务器,即使在有其他许多不错Web服务器的情况下.然而,在Nginx上提供Go应用服务的开销是多少呢?我们需要一些nginx的特性参数(vhosts,负载均衡,缓存,等等)或者直接使用Go提供服务?如果你需要nginx,最快的连接机制是什么?这就是在这我试图回答的问题.该基准测试的目的不是要验证Go比nginx的快或慢.那将会很愚蠢. 下面是我们要比较不同的设置:

  • windows使用nginx实现网站负载均衡测试实例

    如果你关注过nginx,必定知道nginx这个软件有什么用的,如果你的网站访问量越来越高,一台服务器已经没有办法承受流量压力,那就增多几台服务器来做负载吧.做网站负载可以买硬件设备来实现,比如F5,不过价格就几十万到上百万,够贵,本文介绍做网站负载的软件是免费的,nginx目前好多门户网站与大访问量的网站都在使用做为HTTP服务器,所以nginx是非常优秀的,下面介绍做负载测试吧.环境:(2台服务器)第一台: CPU:Inter(R) Pentium(R) 4 CPU 2.8G 内存:1G 系统

  • nginx的FastDFS分布式存储模块测试方法

    再回过头来看FastDFS更新很快,还看到fastdfs-nginx-module_v1.01.tar.gz nginx模块,所以今天在一台测试机上测试了·测试几天看稳定不稳定,在考虑换掉浪费资源的 lustre ! 环境: storage1:192.168.6.100 storage2:192.168.6.101 tracker:192.168.6.102 1. 在每个机器上,下载安装 FastDFS nginx $> wget http://fastdfs.googlecode.com/fi

  • nginx win32 版本静态文件测试 (Windows环境)

    下载了 Nginx For Win32 的官方版本 nginx 0.7.53 进行了试用以及压力测试. 安装使用方式很简单,直接贴官方的方式: Win32 Binaries As of 0.7.52, Nginx is now available as an official Windows binary. Installation: cd c:\ unzip nginx-0.7.52.zip ren nginx-0.7.52 nginx cd nginx start nginx Control

  • 配置ab来为Nginx服务器做压力测试的方法

    在运维工作中,压力测试是一项非常重要的工作.比如在一个网站上线之前,能承受多大访问量.在大访问量情况下性能怎样,这些数据指标好坏将会直接影响用户体验. 但是,在压力测试中存在一个共性,那就是压力测试的结果与实际负载结果不会完全相同,就算压力测试工作做的再好,也不能保证100%和线上性能指标相同.面对这些问题,我们只能尽量去想方设法去模拟.所以,压力测试非常有必要,有了这些数据,我们就能对自己做维护的平台做到心中有数. 目前较为常见的网站压力测试工具有webbench.ab(apache benc

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

    测试环境: 测试客户机A: HP DL380G4,2个双核CPU,4G Ram,2块10k RPM SAS盘做raid 1,ext3 Nginx所在服务器B:DELL R710,E5620 * 2,32G Ram,6块盘15K RPM SAS盘做raid 1+0,xfs Memcached所在服务器C:DELL R710,E5620 * 2,32G Ram,6块盘15K RPM SAS盘做raid 5,ext4 Nginx设置:keepalive 8192 Php fpm设置:listen.ba

  • 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 --

  • 解决tp5在nginx下修改配置访问的问题

    第一:修改nginx配置 注意:所有配置都是基于lnmp1.4的一键安装环境的 根据自己的nginx配置,找到正确的fastcgi.conf,修改fastcgi_param参数 将默认的路径修改至自己的项目根目录的上一级,注意是上级!!! 3.lnmp nginx reload lnmp nginx restart 第二:执行service nginx restart命令重启nginx,发现网页报404错误,需要配置一下伪静态可以在/usr/local/nginx/conf/www.tp5.co

  • Nginx禁止指定UA访问的方法

    本文介绍 Nginx 禁止指定 UA 访问的配置. UA,即 Http User Agent,在 Nginx 中使用内置变量 $http_user_agent 表示,该信息作为 request header 的一部分被发往 webserver.因此,对 webserver 来说,有一种禁止访问的方式,就是对 UA 进行判断. 禁止搜索引擎爬虫 因为你懂的原因,并不是太希望 Baidu 这类爬虫来我的网站,所以在 Nginx 中使用 if 对 UA 进行判断: if ($http_user_age

  • nginx+tomcat 通过域名访问项目的实例

    之前对于使用域名如何访问项目很好奇,但苦于搞一个自己的域名实在是太麻烦了,还需要去买,各种提交资料,等待审核,备案...现在手上没什么项目,也什么事情,想着折腾折腾... 看着腾讯服务器打折,花了40块钱大洋买了一个最低版本的服务器(穷,没办法,反正个人用用够了),这里不得不吐槽一下腾讯,安全级别设那么高干嘛,直接远程登录不行,因为ip都ping不通,还有各种端口.命令全部禁掉,因为之前用过阿里云,安全级别没这么高,折腾了大半天,配置如下 然后开始正式操作,先随便搭个项目,能访问就行,通过tom

  • Nginx域名转发https访问的实现

    说在前面的话: 突然接到这么一个任务,将多个域名的访问必须使用https的转发访问,其实对Niginx的使用很简单,文档也很齐全(不管是腾讯云还是阿里云),入坑的原因是对Niginx服务器的陌生和走的弯路. 1.弯路:Tomcat支持SSL 腾讯云Tomcat服务器证书配置 修改server.xml文件 <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSL

  • nginx配置https加密访问的详细教程

    环境: 1台 CentOS Linux release 7.5.1804 (Core) 关闭防火墙和selinux 开始部署: 1.安装nginx @1.1 依赖安装 yum -y install wget gcc gcc-c++ pcre-devel openssl-devel @1.2 nginx软件包下载 wget http://nginx.org/download/nginx-1.19.0.tar.gz @1.3 解压.编译.安装 [root@localhost ~]# tar xf n

  • nginx如何将http访问的网站改成https访问

    1. 背景 我有个用于数据展示的网站使用nginx对外提供http访问,另外一个系统用超链接的方式跳转到我的网站提供给终端用户访问.后来对方说他们的站点是https访问的,不能直接访问http,所以需要我支持https访问. 所以这里仅限于展示类网站的参考,交互式网站我也不会. ***对nginx的了解仅限于可以通过配置文件完成网站访问的配置,其他没有深入理解.*** 2. 预备知识 https: HTTPS(全称:Hyper Text Transfer Protocol over Secure

  • uwsgi+nginx代理Django无法访问静态资源的解决

    在部署uwsgi+nginx代理Django的时候,使用uwsgi访问正常,但是使用nginx代理端口访问的时候无法访问静态资源. 解决方法: 查看nginx启动用户,将静态资源赋权给改用户访问即可. 如我的静态资源目录:/data/django/static 赋权:chmod 755 /data/django/static -R uwsgi配置: # uwsig使用配置文件启动 [uwsgi] # 项目所在的根目录 chdir=/data/django/dailyfresh # 指定项目的ap

  • Nginx+Windows搭建域名访问环境的操作方法

    目录 一.修改Windowshosts文件 二.Nginx配置文件 三.分析Nginx配置文件 四.gulimall.conf 4.1查看Windowsip 4.2配置代理 五.图示 六.反向代理:nginx代理网关由网关进行转发 6.1修改nginx.conf 6.2修改gulimall.conf 七.访问跳转分析 7.1后面的跳转分析 一.修改 Windows hosts 文件 位置:C:\Windows\System32\drivers\etc 在后面追加以下内容: # guli mall

随机推荐