kvm虚拟机 nginx性能测试

原创
2013/02/03 21:24
阅读数 4.9K

暂时停止对mongodb的性能测试 因为前端做负载均衡的nginx性能提升不上去 由于经费 还有目前测试条件的限制 我们做的性能测试都是在KVM虚拟机里搭建的环境 nginx1.2.6 测试工具就是apache benchmark(ab) 操作系统是centos5.4(好老啊)


测试准备: 

主要是内核参数调优 常见的dmesg信息就是‘TCP: time wait bucket table overflow’ 

如果开启了iptables那么可能会遇到'kernel: ip_conntrack: table full, dropping packet.'

net.ipv4.tcp_max_tw_buckets = 65535
net.ipv4.tcp_sack = 1 
net.ipv4.tcp_window_scaling = 1 
net.ipv4.tcp_rmem = 4096 87380 4194304  
net.ipv4.tcp_wmem = 4096 16384 4194304  
net.core.wmem_default = 8388608 
net.core.rmem_default = 8388608 
net.core.rmem_max = 16777216 
net.core.wmem_max = 16777216 
net.core.netdev_max_backlog = 262144 
net.core.somaxconn = 262144 
net.ipv4.tcp_max_orphans = 3276800 
net.ipv4.tcp_max_syn_backlog = 262144 
net.ipv4.tcp_timestamps = 0 
net.ipv4.tcp_synack_retries = 1 
net.ipv4.tcp_syn_retries = 1 
net.ipv4.tcp_tw_recycle = 1 
net.ipv4.tcp_tw_reuse = 1 
net.ipv4.tcp_mem = 94500000 915000000 927000000  
net.ipv4.tcp_fin_timeout = 1 
net.ipv4.tcp_keepalive_time = 30 
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 90
net.ipv4.ip_local_port_range = 1024 65000 
fs.file-max = 102400


测试页面就是简单的html 内容是hello world   虚拟机配置 2cpu 2GB memory

虚拟机内部搭建单个nginx实例 work process的值我们开始设置的很高 比如2个cpu 我们给它设定的值为8或者16 在跑ab测试的时候 运行vmstat 监控状态 会发现等待运行的进程数>5 当这个数值上升时  可以明显感觉到ab的速度在下滑 但是调整到和cpu个数一致 等待运行的进程数有明显的降低

ok 在虚拟机内部压nginx rps可以达到1w左右 感觉还算比较正常 相比物理上的测试结果 我觉得这个rps还是比较满意的 但是通过另外一台物理机 经过网络来压它 峰值只能到2k rps左右 我们的网络连接是100M ab中的平均传输率在250K左右 用了一个工具dstat 来查看网络 磁盘io 网络传输在1M左右 显然没有达到峰值 哎 肯定是网络的问题了 查了kvm的相关资料 然后对比自己虚拟机选择的NIC omg 我们使用的是默认的NIC 推荐使用virtio 用virtio几乎可以达到物理NIC的效率 调整后测试 可以达到9k-1w rps 在GBit网络模式下 虚拟机的网络配置也推荐使用virtio 

展开阅读全文
打赏
1
58 收藏
分享
加载中

引用来自“jameslord”的评论

引用来自“BaiYang”的评论

看来 KVM 确实不如 VMWare 呀,当年我在 Thinkpad T61 下用单核+768MB RAM 跑 VMWare Ubuntu 8.04LTS VMWare Guest,在 Host 上用 ab 测,rps 都能到 17000。

rps是神马?

典型的回帖不看帖 :-)



见5楼
2013/02/10 16:25
回复
举报

引用来自“BaiYang”的评论

看来 KVM 确实不如 VMWare 呀,当年我在 Thinkpad T61 下用单核+768MB RAM 跑 VMWare Ubuntu 8.04LTS VMWare Guest,在 Host 上用 ab 测,rps 都能到 17000。

rps是神马?
2013/02/10 15:33
回复
举报

引用来自“pengfei_xue”的评论

引用来自“BaiYang”的评论

引用来自“jun4rui”的评论

引用来自“BaiYang”的评论

看来 KVM 确实不如 VMWare 呀,当年我在 Thinkpad T61 下用单核+768MB RAM 跑 VMWare Ubuntu 8.04LTS VMWare Guest,在 Host 上用 ab 测,rps 都能到 17000。

这个没啥好比的把,他连什么硬件都没说,而且测试方式你未必和他一样。

测试方式确实是个问题,不过 LZ 没给出 ab 的具体参数。

虚拟机 配置了2个cpu 2G内存 100M网络 但是cpu并非是独占的 和有其它的虚拟机占用这两个cpu

ab 参数
ab -n 10000 -c 100

页面是简单的hello world

使用另一个工具 git://github.com/wg/wrk.git

nginx可以跑到3w多

那就难怪了,当年我用的也是 -c 100,不过我应该开了 -k。因为我希望测试的是一个 Web app 框架的效率,而不是 linux 的 TCP 建链/拆链效率。
2013/02/06 18:48
回复
举报

引用来自“BaiYang”的评论

看来 KVM 确实不如 VMWare 呀,当年我在 Thinkpad T61 下用单核+768MB RAM 跑 VMWare Ubuntu 8.04LTS VMWare Guest,在 Host 上用 ab 测,rps 都能到 17000。

不能那这些已知的数据来比吧
2013/02/06 17:44
回复
举报
pengfei_xue博主

引用来自“BaiYang”的评论

引用来自“jun4rui”的评论

引用来自“BaiYang”的评论

看来 KVM 确实不如 VMWare 呀,当年我在 Thinkpad T61 下用单核+768MB RAM 跑 VMWare Ubuntu 8.04LTS VMWare Guest,在 Host 上用 ab 测,rps 都能到 17000。

这个没啥好比的把,他连什么硬件都没说,而且测试方式你未必和他一样。

测试方式确实是个问题,不过 LZ 没给出 ab 的具体参数。

虚拟机 配置了2个cpu 2G内存 100M网络 但是cpu并非是独占的 和有其它的虚拟机占用这两个cpu

ab 参数
ab -n 10000 -c 100

页面是简单的hello world

使用另一个工具 git://github.com/wg/wrk.git

nginx可以跑到3w多
2013/02/05 16:42
回复
举报

引用来自“jun4rui”的评论

引用来自“BaiYang”的评论

看来 KVM 确实不如 VMWare 呀,当年我在 Thinkpad T61 下用单核+768MB RAM 跑 VMWare Ubuntu 8.04LTS VMWare Guest,在 Host 上用 ab 测,rps 都能到 17000。

这个没啥好比的把,他连什么硬件都没说,而且测试方式你未必和他一样。

测试方式确实是个问题,不过 LZ 没给出 ab 的具体参数。
2013/02/05 16:19
回复
举报

引用来自“jun4rui”的评论

引用来自“BaiYang”的评论

看来 KVM 确实不如 VMWare 呀,当年我在 Thinkpad T61 下用单核+768MB RAM 跑 VMWare Ubuntu 8.04LTS VMWare Guest,在 Host 上用 ab 测,rps 都能到 17000。

这个没啥好比的把,他连什么硬件都没说,而且测试方式你未必和他一样。

首先,我觉得他的测试硬件不可能比 6、7 年前的笔记本差。其次,忘说了我测的也是返回 hello world 网页而已。
2013/02/05 16:17
回复
举报

引用来自“拼了命装可爱”的评论

引用来自“FedoraProject”的评论

引用来自“拼了命装可爱”的评论

引用来自“lidashuang”的评论

引用来自“拼了命装可爱”的评论

CentOS5.4真心不老。

都6.4了

嘻嘻~ 那你说说6.4和5.4差别在哪里~

改进了虚拟化技术支持,原生支持LinuxIC

嗯,那和你的应用不搭边啊。你这是kvm嘛,人家那是HV

以前都要装驱动才能在Hyper里面虚拟,非常不方便。
2013/02/05 11:28
回复
举报

引用来自“FedoraProject”的评论

引用来自“拼了命装可爱”的评论

引用来自“lidashuang”的评论

引用来自“拼了命装可爱”的评论

CentOS5.4真心不老。

都6.4了

嘻嘻~ 那你说说6.4和5.4差别在哪里~

改进了虚拟化技术支持,原生支持LinuxIC

嗯,那和你的应用不搭边啊。你这是kvm嘛,人家那是HV
2013/02/05 10:58
回复
举报

引用来自“拼了命装可爱”的评论

引用来自“lidashuang”的评论

引用来自“拼了命装可爱”的评论

CentOS5.4真心不老。

都6.4了

嘻嘻~ 那你说说6.4和5.4差别在哪里~

改进了虚拟化技术支持,原生支持LinuxIC
2013/02/05 09:04
回复
举报
更多评论
打赏
19 评论
58 收藏
1
分享
返回顶部
顶部