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,损失并不是非常厉害,仍然是可以接受的;
相关推荐
-
编写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
随机推荐
- AngularJS指令与控制器之间的交互功能示例
- Angular多选、全选、批量选择操作实例代码
- Nginx 多域名配置的方法
- 利用spring aop实现动态代理
- js 只能输入数字和小数点的文本框改进版
- PHP实现删除多重数组对象属性并重新赋值的方法
- JSP指令元素(page指令/include指令/taglib指令)复习整理
- 简单了解C++语言中的二元运算符和赋值运算符
- Mysql的语句生成后门木马的方法
- mysql命令行还原phpMyAdmin导出的含有中文的SQL文件
- Android提高之TelephonyManager功能探秘
- 基于JavaScript实现本地图片预览
- java.exe和javaw.exe的区别及使用方法
- MFC程序设计常用技巧汇总
- Php中使用Select 查询语句的实例
- 解析Android中string-array数据源的简单使用
- Webpack 4如何动态切割JS注入文件名详解
- Python turtle绘画象棋棋盘
- 详解iOS 验证码输入的实现思路
- C#控件picturebox实现画图功能