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 = 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,损失并不是非常厉害,仍然是可以接受的;
本文转自叶金荣51CTO博客,原文链接:http://blog.51cto.com/imysql/1879883,如需转载请自行联系原作者
Nginx HttpMemcModule和直接访问memcached效率对比测试相关推荐
- Nginx 禁止某 IP 访问
导语 总有一些不怀好意的人来访问我的网站,而且频率还很高,所以就用简单的方式禁止访问,就用 Nginx 来实现. 创建黑名单 在 /usr/local/nginx/conf 目录下创建 blocksi ...
- memcached演练(2) 访问memcached服务
通过上节<memcached演练(1) 搭建memcached服务>,已经成功在linux虚拟机上安装了memcached服务,并设置了自启动. STAT version 1.4.29 M ...
- 阿里云服务器ECS Linux系统分析nginx或apache当天访问最多的IP
Linux 系统查询 nginx 或 apache 当天访问最多的 IP 方法,以一键安装包为例可以执行如下命令: cat /alidata/log/nginx/access/testweb.log ...
- 提高大数据量并发访问时效率
最近在做windows服务方面的开发,主要用它来解决A服务和其他服务发送数据失败后,重新发送的问题. 为了提高大数据量并发访问时效率问题,要在多台服务器上安装服务并采用多线程,就像是超市的收银,利用多 ...
- python访问memcached
2019独角兽企业重金招聘Python工程师标准>>> python访问memcached memcached介绍 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态 ...
- nginx之静态资源访问和负载均衡的使用!
一.前言 最近空闲时间稍微少了点,晚上下班一般会看会书,所以更新也就没有那么快了!这不最近在看之前买的书籍(今年真的要多看点书籍): 还有音视频接口和解封装框架,我差不多快捋顺了,其实之前很多人问的接 ...
- 通过Nginx配置多域名访问
通过Nginx配置多域名访问 一.下载Nginx 访问Nginx官网选择对应版本和安装包:http://nginx.org/ 以下讲述为在Windows环境下配置Nginx进行多域名访问 二.Ngin ...
- nginx配置 vue打包后的项目 解决刷新页面404问题|nginx配置多端访问
访问vue页面时,/# 使url看着不美观,使用 H5 history模式可以完美解决这个问题,但需要后端nginx帮助.接下来我们自己配置一下. 使用前端路由,但切换新路由时,想要滚动到页面顶部,或 ...
- 全网最详细的docker配置nginx http2 优化高速访问
Nginx 从 1.13.9 版本开始加入了 HTTP/2 的 Server Push 功能,本文将介绍如何在 Nginx 下实现 HTTP/2 服务器推送 (Server Push) .这里我们首先 ...
最新文章
- 修改nw.js的exe文件使其请求管理员权限
- js 加alert后才能执行方法
- python echo服务器_python常用框架 echo server 的测试
- 程序员的数学笔记2--余数
- AGP与PCI-E的区别和PCI-E接口与PCI接口的区别
- 在 ASP.NET MVC Web 应用程序中输出 RSS Feeds
- C++求复数的角度_单词复数规则:tomato的复数究竟是加s还是es?
- python解析xml格式的excel_Python 读取二进制、HTML 、XML 格式存储的 Excel 文件
- 适合独自一人宅在家必追十部影片推荐下载观看
- 简述什么是SQL注入,写出简单的SQL注入语句。
- composer 安装php endroid/qrcode二维码应用,二维码里面添加logo
- 英语不好、数学不好能自学编程吗?自学编程出路如何?老程告诉你
- struts2文件上传和下载
- 做一个自由职业者是一种怎样的体验?
- 《大数据: Flume 多个Agent 串联(AvroSource、AvroSink)》
- 前端面经——腾讯暑期实习生
- 后台开发语言的比较 java php python asp.net ruby on rails
- echarts自定义拐点图片
- YouTube图片幻灯片分享技巧
- 三毛面经-MySql面试经历
热门文章
- JavaScript强化教程——对象的值传递和引用传递
- tomcat启动停在Initializing Spring root WebApplicationContext
- myeclipse 10创建maven项目
- ThinkPHP 模板循环输出 Volist 标签
- 各浏览器中for in顺序的差异
- mysql错误日志/var/log/mariadb/mariadb.log,二进制日志
- C语言关键字、标识符和注释
- PL/SQL:使用pragma restrict_references限制包权限
- eclipse 无法使用注解的两个解决方法
- ORA-01078与LRM-00109报错解决