工作、非工作时间web并发差距10倍,如何解决,请资深高手指点。

13-01-12 dragon6688
              

正在给客户开发一个供员工访问的平台,基于Java、jsp技术,使用apache加tomcat集群,目前配置了3个tomcat,经过在用户网络测试,测试情况如下,请各位资深高手协助指点。

下边是在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个或更多,但是不知能否解决问题。

抛砖引玉,希望能和各位资深同行探讨,欢迎批评指正,给出建议,谢谢!

[该贴被dragon6688于2013-01-12 13:19修改过]

[该贴被dragon6688于2013-01-12 13:21修改过]

              

banq
2013-01-12 16:06

要找出工作和非工作时间的差别,是公开互联网还是intranet网,普通互联网要是否爬虫太多等等。

如是访问量大是否导致数据库负载增大,如果是,数据库优化,在tomcat引入缓存。

如果数据库负载不大,只是tomcat应用服务器负载大,那么通过visualvm等工具找出哪些类耗费CPU,通过引入异步分解这些消耗性计算。

总之,问题可能性很大,解决方案也很多,关键是对症下药。

gameboyLV
2013-01-12 21:58

如果是SQL负载大,在本地搭建NOSQL,定期将用户表推送到本地。

如果是网络负载大,登陆时使用jsonp验证。

dragon6688
2013-01-14 10:26

回复2楼:

要找出工作和非工作时间的差别,是公开互联网还是intranet网,普通互联网要是否爬虫太多等等。

如是访问量大是否导致数据库负载增大,如果是,数据库优化,在tomcat引入缓存。

如果数据库负载不大,只是tomcat应用服务器负载大,那么通过visualvm等工具找出哪些类耗费CPU,通过引入异步分解这些消耗性计算。

总之,问题可能性很大,解决方案也很多,关键是对症下药。

1. 系统部署在用户intranet环境

2. 个人觉得可以排除数据库负载,因为登录后对数据库负载较小,从登录的几个事务中,主要是加载登录后的主页面耗时最多,但是我们已经做过优化

3.从前一次测试的情况看,服务器的性能稳定,cpu、内存等都在可控范围

4.tomcat引入缓存如何理解?

sinaID20811
2013-03-07 17:08

4.tomcat引入缓存如何理解?

---------将你相关对象缓存起来,以后直接获取。