最近做了一次队列服务的性能测试,是通过两种协议windows socket和http分别往内存中写入url。对比哪种协议的效果更高,下图是测试结果。此次使用的工具是loadrunner。在压socket协议时,不能进行录制,只能通过手写函数完成。
环境说明 | 服务端 111.111.111.218,配置cpu3.0/4核 内存4G. 100m带宽 测试机 111.111.111.19 配置cpu3.0/4核 内存4G. 100m带宽 |
|||||
测试目的 | 性能测试 | 测试人 | 李秀龙 | |||
场景说明 | windows socket协议: 连续读写固定的值 (读写同时进行) http协议: http://111.111.111.218/put/queue?data=12345 (其中data值最大长度设置为200字符,其结果与5个字符长度基本上相同) |
|||||
持续执行时间 | 5分钟 | 测试日期 | 2009-9-7 | |||
结果分析 | 服务器资源 | 响应时间 | ||||
并发用户 | 协议 | CPU利用率(%) | 占用内存(%)共4G | load average | 每秒完成读写(个/秒) | 一次读写响应时间(秒/个) |
20 | windows socket | 70% total / 34% us / 36% sy | 26% | 4.1 | 8000 | 0.002 |
20 | http | 74% total / 42% us / 32% sy | 10% | 4.4 | 3200 | 0.006 |
结果分析 | 1,由于压力客户端数量有限,所以将以服务器的cpu使用率为基准,在两种协议分别将cpu压到70%时,看哪种协议响应时间快和每秒完成的读写次数多,由此来判断 某种协议的优劣 2,读写同时进行,避免内存溢出.所以需要有get错误处理机制,避免只写不读 3,从上面结果中的处理时间和每秒完成的读写次数判断,windows socket协议性能远远高于http协议. |