各种语言web性能简单对比测试
忽然想比较一下 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: 以上结论未考虑 开发效率,人员薪资成本等因素
各种语言web性能简单对比测试的更多相关文章
- web性能优化之--合理使用http缓存和localStorage做资源缓存
一.前言 开始先扯点别的: 估计很多前端er的同学应该遇到过:在旧项目中添加新的功能模块.或者修改一些静态文件时候,当代码部署到线上之后,需求方验收OK,此时你送了一口气,当你准备开始得意于自己的ma ...
- Web性能优化 高并发网站解决 单例 已看1
Web性能优化分为服务器端和浏览器端两个方面. 一.浏览器端,关于浏览器端优化,分很多个方面1.压缩源码和图片JavaScript文件源代码可以采用混淆压缩的方式,CSS文件源代码进行普通压缩,JPG ...
- [转]基于phantomJS实现web性能监控
1.web性能监控背景描述 上期分享的<Web性能监控自动化探索之路–初识WebPageTest>从依赖webpagetest的角度给出了做性能日常检查的方案,但由于依赖结构相对复杂我们需 ...
- Go语言web框架 gin
Go语言web框架 GIN gin是go语言环境下的一个web框架, 它类似于Martini, 官方声称它比Martini有更好的性能, 比Martini快40倍, Ohhhh….看着不错的样子, 所 ...
- 最好的6个Go语言Web框架
原文:Top 6 web frameworks for Go as of 2017 作者:Edward Marinescu 译者:roy 译者注:本文介绍截至目前(2017年)最好的6个Go语言Web ...
- Web性能优化:What? Why? How?
为什么要提升web性能? Web性能黄金准则:只有10%~20%的最终用户响应时间花在了下载html文档上,其余的80%~90%时间花在了下载页面组件上. web性能对于用户体验有及其重要的影响,根据 ...
- Web性能优化-合并js与css,减少请求
Web性能优化已经是老生常谈的话题了, 不过笔者也一直没放在心上,主要的原因还是项目的用户量以及页面中的js,css文件就那几个,感觉没什么优化的.人总要进步的嘛,最近在被angularjs吸引着,也 ...
- web性能优化——浏览器相关
简介 优化是一个持续的过程.所以尽可能的不要有人为的参与.所以能自动化的或者能从架构.框架级别解决的就最更高级别解决. 这样即能实现面对开发人员是透明的.不响应,又能确保所有资源都是被优化过的. 场景 ...
- Web性能API——帮你分析Web前端性能
前端性能统计必备api,有不知道的吗? 正文从这开始- 开发一个现代化的互联网网站是一项复杂的任务,需要各种职能的密切合作以应对用户日新月异的需求.其中,网页的性能直接决定了用户的体验,而随着新型客户 ...
随机推荐
- Python-面向对象之高级进阶
目录 classmethod与staticmethod 面向对象高级 isinstance.issubclass 反射 魔法方法(类内置方法) 单例模式 classmethod与staticmetho ...
- mybatis接口映射
通过sqlSession.getMapper();方法获取映射的接口及方法 sqlSession调用Configuration的getMapper方法,方法中使用了mapperRegistry.get ...
- JavaScript中字符串类型
字符串类型 字符串介绍 这是程序里面使用最为广泛的一-种类型.在JavaScript里面, 可以使用单引号,也可以使用双引号: 字符串这种数据类型非常霸道,它和其他数据类型相加都会被转换后才为字符串类 ...
- 【CF932E】Team Work
题目 luogu的Romtejudge挂了我就当我过了吧 求 \[\sum_{i=1}^n\binom{n}{i}i^k\] 其实是个思博套路题,但是我现在这个水平还是刷刷板子吧 处理\(x^k\)是 ...
- springmvc-高级参数绑定-映射-异常-json数据交互-拦截器
1.1. 高级参数绑定 1.1.1. 复制工程 把昨天的springmvc-web工程复制一份,作为今天开发的工程 复制工程,如下图: 粘贴并修改工程名为web2,如下图: 工程右键点击,如下图: 修 ...
- mybatis-输入输出映射-动态sql-关联查询-mybatis与spring-逆向工程
1.1. 输入映射和输出映射 Mapper.xml映射文件中定义了操作数据库的sql,每个sql是一个statement,映射文件是mybatis的核心. 1.1.1. 环境准备 1. 复制昨天的工程 ...
- ORC格式hive逻辑中case when问题
前阵子做hive开发发现orc格式文件使用case when情况下会造成nullcount会统计入内问题,修改为sum就没此问题.具体例子下次放假回来记录,现在不在公司,这里做个mark
- 如何转移Pycharm的设置或者缓存到其他盘
因为Pycharm项目缓存C:\Users\wq\.PyCharm2017.2\system\caches下面的content.dat.storageData特别大,占用很多C盘空间,所以我就想办法, ...
- jqGrid的subGrid子表格
使用完整jqGrid作为子表格 使用子表格,涉及到jqGrid的三个选项: subGrid :首先必须将jqGrid的subGrid选项设置为true,默认为false:当此项设为true的时候,Gr ...
- mac配置ls命令显示不同文件不同颜色
使用Mac看到Linux的Ubuntu终端显示的颜色是不是觉得很酷炫,是否很想自己也拥有一样变色技巧?不怕,我们也是可以的! . 打开配置文件 sudo vim ~/.bash_profile 写入以 ...