针对win2000优化web服务器性能,主流web服务器性能测试

前言

因为boss要一个并发能上W得平台,而且还是要PHP得...恩..好吧,我是不喜欢php的,但是没办法,谁叫PHP是世界上最好得语言呢。

于是心血来潮,来了一组 web服务器性能测试,测试有

php7-fpm(docker) + nginx

java 8 + tomcat 9

node.js 5 + express4 +pm2

本来想自己写一个C得web服务器实现得,不过已经有nginx了,而且写着累,测试中没有加入 python,ruby,go,因为不大熟悉,如果你觉得很想看一下,留言一下,我再去跑测试

对于截图得问题,截图太多了(3*4*2张),所以就不一一附上了,每个只附上一张

a51e7bcc1df6?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

桌面截图.png

配置与环境

CPU:I7-4710QM 8线程(4核超线程)

内存:12G DDR3 1600MHZ

硬盘:530M/S固态

系统:ubuntu linux 16.04TLS

网络: 本机!!请注意与实际的差别

(暂时想不起还有什么配置没说了,漏了请留言)

相关命令

TOP:用来查看linux资源占用情况

PM2:一个带均衡负载的进程管理器,用于node多进程启动(作用不限于此)

docker:一个系统容器,本人就是用它来快速搭载PHP7的

ab:一个性能测试程序,我在win下也喜欢用它,siege发挥不出服务器的性能,其他还没测试

ulimit:系统的限制,-n 可以修改允许打开文件数,ab并发需求

开始测试

Nginx

a51e7bcc1df6?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

nginx-2.png

并发:100 次数:1W

结果:0.3S (0.287, 0.294, 0.305)

估算处理数:34000次/秒 (34801, 34024, 32767)

并发:2W 次数:2W

结果:0.7S (0.714, 0.708, 0.707)

估算处理数:28000次/秒 (28015, 28264, 28290)

并发:2W 次数:100W 下的资源占用测试

完成时间:33S

ab: CPU:98.6% 内存:0.7%

进程占用:4-8进程 (主要4线程)

CPU占用率: 31% 28% 15% 11%

内存占用:0.2-0.9 (基本没变化)

结论

nginx 还是非常不错的,占用的内存,CPU资源都很少,C语言效率还是很好的

php7-fpm(docker)

a51e7bcc1df6?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

php-2.png

并发:100 次数:1W

结果:1S (1.033, 1.060, 1.064)

估算处理数:9500次/秒 (9678, 9430, 9401)

并发数在php中比较难以控制,而且出现了访问错误

前面部分的读取时间很快

后面部分的读取时间很慢

并发2W 次数2W时 需要60秒

并发1W 次数2W时 需要30秒

并发5K 次数2W时 需要30秒

并发:1W 次数:1W

结果:???S (31.782, 53.001, 16.327)

估算处理数:???次/秒 (629, 377, 1224)

(╯‵□′)╯︵┻━┻

并发385 次数2W时 需要 4秒

并发1000 次数2W时 需要 4.5秒

并发2000 次数2W时 需要 16, 4.3, 7.1, 8.4 秒

(╯‵□′)╯︵┻━┻

并发:385 次数:100W 下的资源占用测试

完成时间:119S

ab: CPU:51% 内存:0.7%

进程占用: nginx:4-8进程 php-fpm: 4-8进程

CPU占用率: php-fpm:都在大约25%; nginx:和上面测试大约相同; 其他还有其他古怪的线程...

内存占用:0.1% (每进程)

a51e7bcc1df6?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

奇怪的线程截图

结论

就是它拖了我这么长的时间..大并发时不稳定,资源利用不太好,印象中效率比较差

可能是优化还没到位吧

一开始测试文件也有问题 1W次 要4.5秒....发现是代码加了include其他的初始化文件...

所以其实PHP这样继续写下来,还是有一定的问题的(但是有优化方案)

java 8 + tomcat 9

a51e7bcc1df6?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

java-2.png

并发:100 次数:10000

结果:0.5S (0.974, 0.576, 0.510, 0.404, 0.424, 0.424)

估算处理数:22000次/秒 (10264, 17360, 19591, 24747, 23611, 23577)

最大并发:20000 (ab上限2W)

并发:20000 次数:20000

结果:1S (0.5s/10000次) (1.698, 1.466, 1.240, 1.060, 0.888, 1.012)

估算处理数:19000次/秒 (11778, 13647, 16134, 18860, 22527, 19754)

并发:20000 次数:100W 下的资源占用测试 (重启容器)

完成时间:46S

ab: CPU:98.6%

进程占用:1进程 多线程

CPU占用率: 220-450% 多数情况在220%左右,偶尔飙升

内存占用: 迅速飙升到 11%,后缓慢上升至15%

结论

越访问越快....但是占用内存比较多,可能是GC还没到位

node.js 5 + express4 +pm2

a51e7bcc1df6?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

java-2.png

并发:100 次数:10000

结果:1S (1.276, 0.932, 0.904, 0.890)

估算处理数:10000次/秒 (7834, 10724, 11059, 11234)

最大并发:20000 (ab上限2W)

并发:20000 次数:20000

结果:1.7S (0.8s/10000次) (1.910, 1.657, 1.649, 1.755)

估算处理数:11000次/秒 (10469, 12072, 12128, 11398)

并发:20000 次数:100W 下的资源占用测试 (重启容器)

完成时间: 93s

ab: CPU:74%

pm2: CPU:98.7%

进程占用:8进程(手动设置)

CPU占用率: 60%

内存占用: 0.7基本不变

结论

目前是我比较喜欢的语言,运行效率一般,还行,开发效率高一点,没有明显的重大缺陷

后语

这个测试,断断续续做了我2周多...,每次发现都能发现有点不合理的地方,然后重新跑……跑到我都累了,每次跑都有一定的误差

重新编译 ab ,优化 nginx+php配置,等等让我重新跑了N次测试,心都累了

估计读者看完的东西后,能获得的东西可能也不会太多,但如果觉得这篇文章,你觉得有帮助,请点个喜欢,支持一下,谢谢,你的支持,我的动力!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值