首页 > 代码库 > 一个性能问题-20140908
一个性能问题-20140908
下边是在1个apache加3个tomcat集群的测试结果:
在工作时间的网络环境下:
20个并发登录平均响应时间在4秒之内,50个并发登录平均响应时间在7秒之内,超过75个并发登录响应时间超过9秒,不可接受;
在非工作时间的网络环境下:
150个并发登录平均响应时间在3.3秒之内,300个并发登录平均响应时间在4.6秒之内,500个并发登录平均响应时间在7秒之内,
超过700个并发登录响应时间超过9秒,不可接受;
为了验证1个apache加1个tomcat集群可以支持的并发数,分别作了以下测试:
在工作时间的网络环境下:
30个并发登录平均响应时间在5.1秒之内,达到50个并发登录响应时间超过8秒,不可接受;
在非工作时间的网络环境下:
200个并发登录平均响应时间在4.2秒之内,400个并发登录平均响应时间在6.23秒之内,尚可接受。
通过以上测试,在用户工作和非工作时间的网络情况下,平台支持的并发差距达10倍。对于web应用,受网络环境的影响超出想象,
也就是说理想网络环境和真实环境下,并发访问支持差距很大。现在用户要求给出解决方案,请各位高手指点。
个人初步的想法如下:
1. 我们的程序经过优化,包括精简代码、去掉不必要的资源引用、去掉不必要的逻辑、压缩图片等,程序优化的可能性较小;
2. 用户端的网络也不是我们想说优化就能优化的,如何优化,因为用户的网络较复杂,我们也不是这方面的专家,能提出建设性的优化方案可能性较小;
3. 目前似乎只能继续增加tomcat,增加到5个或更多,但是不知能否解决问题。
======================解决方案:====================================================================
1.要找出工作和非工作时间的差别,是公开互联网还是intranet网,普通互联网要是否爬虫太多等等。
2.如是访问量大是否导致数据库负载增大,如果是,数据库优化,在tomcat引入缓存。
3.如果数据库负载不大,只是tomcat应用服务器负载大,那么通过visualvm等工具找出哪些类耗费CPU,
通过引入异步分解这些消耗性计算。
4.如果是SQL负载大,在本地搭建NoSQL,定期将用户表推送到本地。
5.如果是网络负载大,登陆时使用jsonp验证。
一个性能问题-20140908