workerman性能测试
来源:互联网 发布:北航软件学院分数线 编辑:程序博客网 时间:2024/06/06 22:13
http://www.workerman.net/bench
测试环境:
系统:debian 6.0 64位内存:64Gcpu:ntel(R) Xeon(R) CPU E5-2420 0 @ 1.90GHz (2颗物理cpu,6核心,2线程)Workerman:开启200个Benchark进程压测脚本:benchmark业务:发送并返回hello字符串
业务逻辑
// HTTP协议返回hello字符串,非HTTP协议客户端发来什么就返回什么class Benchmark extends Man\Core\SocketWorker{ // 分包 public function dealInput($buffer) { return 0; } // HTTP协议返回hello字符串,非HTTP协议客户端发来什么就返回什么 public function dealProcess($buffer) { // 是HTTP协议 if('G' == $buffer[0] ) { // http 改成短链接 $this->isPersistentConnection = 0; return $this->sendToClient("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\nhello"); } // 是benchmark脚本, 长链接 $this->isPersistentConnection = 1; return $this->sendToClient($buffer); }}
压测方法
方法一 ab软件(只能以HTTP协议压测workerman短连接性能):
#例如下面的语句是模拟200个客户端向127.0.0.1:56789发送100000个HTTP请求ab -n 100000 -c200 127.0.0.1:56789/
方法二:使用workerman自带的benchmark软件,只支持64位linux系统
1、#例如下面的命令含义是400并发线程模拟400个并发用户,每个用户连接127.0.0.1:56789端口发送一个hello服务端收到hello后返回一个hello后断开连接,这样每个线程并发运行10000次./benchmark -n10000 -h1 -c400 -p56789 127.0.0.1 2、#例如下面的命令含义是1000并发线程模拟1000个并发用户,每个用户连接127.0.0.1:56789端口,然后每个线程并发连续发送10000个hello,服务端收到hello后返回一个hello./benchmark -n1 -h10000 -c1000 -p56789 127.0.0.1
结果
普通PHP(版本5.3.10)压测
短链接(每次请求完成后关闭链接,下次请求建立新的链接): 脚本:./benchmark -n100000 -h1 -c500 -p56789 127.0.0.1 含义: 压测脚本开500个并发线程模拟500个并发用户,每个线程链接Workerman 10W次,每次链接发送1个请求 结果: 吞吐量:1.9W/S , cpu利用率:32%长链接(每次请求后不关闭链接,下次请求继续复用这个链接): 脚本:./benchmark -n1 -h100000 -c2000 -p56789 127.0.0.1 含义: 压测脚本开2000个并发线程模拟2000个并发用户,每个线程链接Workerman 1次,每个链接发送10W请求 结果: 吞吐量:36.7W/S , cpu利用率:69%内存:每个进程内存稳定在6444K,无内存泄漏
HHVM环境压测
短链接(每次请求完成后关闭链接,下次请求建立新的链接): 脚本:./benchmark -n100000 -h1 -c1000 -p56789 127.0.0.1 含义: 压测脚本开1000个并发线程模拟1000个并发用户,每个线程链接Workerman 10W次,每次链接发送1个请求 结果: 吞吐量:3.5W/S , cpu利用率:35%长链接(每次请求后不关闭链接,下次请求继续复用这个链接): 脚本:./benchmark -n1 -h100000 -c6000 -p56789 127.0.0.1 脚本: 压测脚本开6000个并发线程模拟6000个并发用户,每个线程链接Workerman 1次,每个链接发送10W请求 结果: 吞吐量:45W/S , cpu利用率:67%内存:HHVM环境每个进程内存稳定在46M,无内存泄漏
无流量抖动,无内存泄漏,性能非常强悍
压测代码及脚本下载:
压测代码及脚本:https://github.com/walkor/workerman-bench压测脚本benchmark位置:workerman-bench/applications/Benchmark/benchmark说明:由于各个系统配置不同,所以压测时可能需要根据系统配置调整压测参数才能达到最优
压测评价
压力测试脚本和workerman服务端运行在同一台服务器上,因为压测的地址均为为127.0.0.1,所以流量没有走网卡。压测使用的是版本较低的PHP5.3.10版本,使用高版本PHP如PHP5.6性能将会更高,压测成绩也将会更好。 另外也压测了facebook的HHVM虚拟机,在短连接方面相比PHP5.3.10吞吐量高出84%左右,在长连接方面比PHP5.3.10吞吐量高出25%左右,期待HHVM后续新版本会有更加出色的成绩。 压测均使用较小的数据包,并且业务逻辑简单,复杂的业务压力测试开发者可以根据自己的业务情况自行实施,肯定也会给开发者一个大大的惊喜。
为什么workerman拥有卓越的性能
0 0
- workerman性能测试
- WorkerMan windows 压力测试
- Workerman
- Workerman
- workerman
- Workerman
- workerman和nodejs自测性能对比
- 高性能 PHP socket 框架 Workerman
- 高性能 PHP socket 框架 Workerman
- workerman高性能socket服务器框架搭建
- workerman高性能socket服务器框架搭建
- workerman,一个高性能的PHP Socket 异步框架
- Workerman 开源高性能的PHP socket 服务器框架
- Workerman 一款纯PHP开发的开源高性能的PHP socket 服务器框架。
- Workerman 一款纯PHP开发的开源高性能的PHP socket 服务器框架。
- workerman 定时器
- workerman推送
- workerman开发
- C将十六进制数字字符串转成数字
- Oracle存储过程之带有返回参数
- ALSA声卡驱动中的DAPM详解之五:建立widget之间的连接关系
- Android项目重构之路:架构篇
- nginx php环境搭建
- workerman性能测试
- 新下载kettle不能启动问题
- MFC 生成中英文版软件对应的工程属性设置
- ALSA声卡驱动中的DAPM详解之六:精髓所在,牵一发而动全身
- Android异步消息处理机制详解及源码分析
- 异常处理和画板的保存
- java 文件预览之 DocConverter工具类 将office 文件转换为 swf
- JNDI常见配置方式
- python爬虫:批量刷新网页