最近在做系统性能调优的问题。大家帮我分析一下可能的瓶颈吧?谢谢各位了。
[b]先说一下我的测试环境:[/b]
App Server: Window 2008 Server + Tomcat 6 , 4 cpu core, 8G mem, 500Mbps, 最大连接4000,Accept 4000, 用了 APR connector。Heap Size 4G
DB Server: Window 2008 Server + Mysql 5.5, 4 cpu core, 8G mem, 500Mbps, 最大并发连接 1000, innodb, buffer pool 4G
JMeter client: Window 2008 Server + JMeter 5.1, 4 cpu core, 8G mem, 500Mbps
也许大家会建议我用Linux系统,我知道那样肯定会好一点。但是没有办法,公司就要求这样的平台。
[b]然后就是我的应用:[/b]
Spring MVC + Resteasy + HIbernate (JPA) + DBCP (连接池500) + 30多张表
[b]看看我的Test Case:[/b]
用JMeter录制了用户访问我的应用的大多数功能。
并发数为1000, ramp-up时间为1000s,因为我的一个线程执行时间也差不多是1000s。所以用JMeter看下来可以达到1000个实际并发用户。case中80%的insert。插入的是30张不同的表。关联很少。我的调用都是rest服务调用。
[b]测试结果[/b]
访问数据库的service响应时间相当慢,在并发数上升到100的时候相应还挺快,大概500毫秒,一旦并发达到800的时候,相应时间可以达到30s。
[b]我的Monitor情况[/b]
App Server 和 DB Server的cpu都是小于10%,内存都只用了1G多,我配置了4G。
用YourKIT看下来的结果,有大量线程都block在了MySQLIO的read。是在block在prepareStatement的jdbc操作上。
请各位给点建议吧。谢谢