-
Notifications
You must be signed in to change notification settings - Fork 48
性能测试
neoremind edited this page Aug 8, 2015
·
6 revisions
- 传入压缩前1kString,不做任何处理,原样返回
- 传入压缩前50kString,不做任何处理,原样返回
- 传入压缩前200kString,不做任何处理,原样返回
- 传入压缩前500kString,不做任何处理,原样返回
- 传入压缩后5k pojo(20个嵌套的复杂person对象),不做任何处理,原样返回
上述场景分别作1、10、20、50、100并发测试。
- QPS(TPS):每秒钟request/事务数量
- 并发数: 系统同时处理的request/事务数
- 响应时间: 一般取平均响应时间
它们之间的关系:
QPS(TPS)= 并发数/平均响应时间
类型 | 配置 |
---|---|
服务端 | Linux内核版本:2.6.32_1-11-0-0。CPU:Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz processor_count : 12。内存:128G |
客户端 | Linux内核版本:2.6.32_1-11-0-0。CPU:Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz processor_count : 12。内存:128G |
类型 | 配置 |
---|---|
Java | 1.6.30 |
JVM参数 | -server -Xms2000m -Xmx2000m -Xmn800m -XX:PermSize=64m -XX:MaxPermSize=128m -XX:SurvivorRatio=4 -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods-XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 |
Tomcat | 6.0.28 |
Tomcat详细配置:
<Connector port="8260" maxHttpHeaderSize="8192"
maxThreads="1000" minSpareThreads="75" maxSpareThreads="350"
enableLookups="false" redirectPort="8263" acceptCount="750"
debug="0" connectionTimeout="300000" disableUploadTimeout="true"
URIEncoding="UTF-8" maxKeepAliveRequests="100000" KeepAliveTimeout="180"
compression="on"
compressionMinSize="40960"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,application/json,text/javascript,text/css,text/plain"/>
1k、50k、200k、500k随机字符串发送到服务端直接echo返回,在各种并发环境下的响应时间如下,单位为毫秒(ms)。
并发数/数据大小 | 1k | 50k | 200k | 500k |
---|---|---|---|---|
1并发 | 0.265 | 1.61 | 6.022 | 17.233 |
10并发 | 0.419 | 1.697 | 5.541 | 14.826 |
20并发 | 0.516 | 1.595 | 5.527 | 14.521 |
50并发 | 1.813 | 2.198 | 7.103 | 14.403 |
100并发 | 1.832 | 1.927 | 6.672 | 14.026 |
图表见下,其中最常见的使用场景大致为20并发+500k数据,响应时间在14ms左右,能够满足绝大部分场景应用。
折算QPS的图表如下,这里以常见的20并发为统计基数,500k数据的QPS能够达到1480,20个复杂的Person对象序列化后的QPS在2899,能够满足高性能服务的场景。