忽然想比较一下  python  nodejs  go 的web 响应,就简单的写了个性能对比测试。

测试目标:
1 . i5 4核 32G  同一机器   linux 
2.  用python(flask线程模式)  nodejs  go  分别写了简单的 echo 服务

测试工具:
wrk

服务器清单:

python  flask      http://192.168.0.208:5050/
nodejs express http://192.168.0.208:5056/
go server http://192.168.0.208:5057/

测试脚本:

wrk -c100 -t10 -d30s  http://192.168.0.208:5050/
wrk -c100 -t10 -d30s http://192.168.0.208:5056/
wrk -c100 -t10 -d30s http://192.168.0.208:5057/ wrk -c1000 -t10 -d30s http://192.168.0.208:5050/
wrk -c1000 -t10 -d30s http://192.168.0.208:5056/
wrk -c1000 -t10 -d30s http://192.168.0.208:5057/

测试结果:

100 终端10线程

Running 30s test @ http://192.168.0.208:5050/
threads and connections
Thread Stats Avg Stdev Max +/- Stdev
Latency .24ms .29ms .28ms 90.54%
Req/Sec 137.84 54.19 202.00 63.72%
requests in .03s, .79MB read
Socket errors: connect , read , write , timeout
Requests/sec: 956.35
Transfer/sec: .62KB hylas@keras208:~$ wrk -c100 -t10 -d30s http://192.168.0.208:5056/
Running 30s test @ http://192.168.0.208:5056/
threads and connections
Thread Stats Avg Stdev Max +/- Stdev
Latency .37ms .63us .71ms 98.57%
Req/Sec .25k 253.62 .32k 97.80%
requests in .01s, .82MB read
Requests/sec: 42284.18
Transfer/sec: .29MB hylas@keras208:~$ wrk -c100 -t10 -d30s http://192.168.0.208:5057/
Running 30s test @ http://192.168.0.208:5057/
threads and connections
Thread Stats Avg Stdev Max +/- Stdev
Latency .20ms .19ms .37ms 91.89%
Req/Sec .93k .45k .58k 72.80%
requests in .07s, .45MB read
Requests/sec: 138501.94
Transfer/sec: .53MB

1000终端 10 线程

hylas@keras208:~$ wrk -c1000 -t10 -d30s  http://192.168.0.208:5050/
Running 30s test @ http://192.168.0.208:5050/
threads and connections
Thread Stats Avg Stdev Max +/- Stdev
Latency .59ms .37ms .97s 91.52%
Req/Sec 129.50 92.32 610.00 66.97%
requests in .09s, .28MB read
Socket errors: connect , read , write , timeout
Requests/sec: 1022.24
Transfer/sec: .57KB hylas@keras208:~$ wrk -c1000 -t10 -d30s http://192.168.0.208:5056/
Running 30s test @ http://192.168.0.208:5056/
threads and connections
Thread Stats Avg Stdev Max +/- Stdev
Latency .00ms .27ms .53ms 96.69%
Req/Sec .01k 480.69 .12k 94.63%
requests in .09s, .03MB read
Requests/sec: 39545.31
Transfer/sec: .88MB hylas@keras208:~$ wrk -c1000 -t10 -d30s http://192.168.0.208:5057/
Running 30s test @ http://192.168.0.208:5057/
threads and connections
Thread Stats Avg Stdev Max +/- Stdev
Latency .17ms .92ms .96ms 91.23%
Req/Sec .94k .57k .62k 70.73%
requests in .09s, .57MB read
Requests/sec: 127325.42
Transfer/sec: .79MB

结论:

1.  100 终端时:python 延时最大,与另外两个相差一个数量级 ,  nodejs go 差不多。 Req/Sec 比例分别是 0.13 : 4:13 , go能大大 13k/s
2.  1000 终端时: nodejs 和 go 的延时增加,但还是明显优与 python ,   Req/Sec  保持稳定 python 最低,nodejs :go  3:12  go的峰值 79k/s
3.  在高并发web服务中 首选 go  , nodejs  次之   python 最弱

ps: 以上结论未考虑 开发效率,人员薪资成本等因素

最新文章

  1. 分布式监控系统Zabbix-3.0.3-完整安装记录(7)-使用percona监控MySQL
  2. 通过 listboxitem 查找属于listbox第几条数据
  3. iOS开发,用了ARC,引入非ARC的第三方,报错
  4. 如何查看屏幕touch driver是否在正常工作
  5. Html5拖拽复制
  6. Easyui数据表格-地区列表及工具栏增删改
  7. NEC学习 ---- 模块 - 左图右文图文列表
  8. 正则表达式(http://tieba.baidu.com/p/882391125)
  9. TestDisk 恢复rm -rf 的文件
  10. Load xlsx in a folder to RDBMS table with Talend
  11. 命令行创建畸形文件夹+畸形目录管理工具(DeformityPath)
  12. 各类.NET学习视频推荐
  13. Spring Autowiring by AutoDetect
  14. 鸟哥的Linux私房菜学习笔记(1)
  15. Windows Phone开发(26):启动器与选择器之MediaPlayerLauncher和SearchTask
  16. ImageMagick利用蒙版合成图片
  17. sass学习入门篇(三)
  18. springboot(十九):使用Spring Boot Actuator监控应用
  19. .Net基础——程序集与CIL
  20. 华为S5700设置vlan,并绑定电脑的IP地址与mac地址。

热门文章

  1. 算法系列:Shell 排序
  2. 廖雪峰Java14Java操作XML和JSON-1XML-4第三方XML库
  3. 字符串哈希——1056E
  4. PAT甲级——A1086 Tree Traversals Again
  5. Struts2入门问题
  6. Ubuntu下U盘能看见盘符但打不开
  7. error C2440 “static_cast” 无法从“void (__thiscall C* )(void)...
  8. 验证occ和vtk整合工作的demo
  9. kafka comsumer
  10. 数据挖掘-diabetes数据集分析-糖尿病病情预测_线性回归_最小平方回归