Apache+Tomcat负载均衡压力测试

公司的网站实在太慢,所以我考虑做负载均衡.

1个Apache + 4个Tomcat,在本地做了压力测试,当100个并发请求时,每个Tomcat的Current thread busy值在25个左右,说明4个Tomcat确实缓解了来自Apache的100并发请求的压力.现在这个负载均衡配置已在服务器上运行.

为了优化数据库连接,我使用了连接池,c3p0比dbcp某些性能要好.4个Tomcat均使用了连接池.

以下是某天tomcat报异常,然后和同事一起做压力测试,3台服务器,数据库服务器,WEB服务器,测试服务器.硬件配置基本可以满足日常需求.


吴 迪 说:
网站异常
 大 双 说:
是啊,我也发现了
吴 迪 说:
有连接找不到
 大 双 说:
怎么回事,好像是数据库连接
吴 迪 说:
dot.task
吴 迪 说:
先别重启
吴 迪 说:
看看各项参数,统计信息
 大 双 说:
我重启sql server
吴 迪 说:
先别重启
 大 双 说:

吴 迪 说:
你把错误日志存成文件,发给我
吴 迪 说:
你有pcanywhere吗?
 大 双 说:

吴 迪 说:
你用pca登陆,我用VNC
 大 双 说:

 大 双 说:
No buffer space available (maximum connecti
ons reached?): connect
吴 迪 说:
看到了
 大 双 说:
重启吧
吴 迪 说:
等等
吴 迪 说:
数据库有异常吗?
 大 双 说:
没有,
 大 双 说:
我估计是连接池的问题
 大 双 说:
达到最大连接,?
吴 迪 说:
用查询分析器可以查询吗?
 大 双 说:
我这没有查询分析器
吴 迪 说:
你关了一个tomcat?
 大 双 说:
没关
吴 迪 说:
已经down了一个
吴 迪 说:
进程都没了
 大 双 说:
重启吧,不然流量就会少了
吴 迪 说:

吴 迪 说:
你重启吧
 大 双 发送:
 
  打开(Alt+P)
 
  您成功地从  大 双 处接收了 C:/Documents and Settings/KenWu/Desktop/error_log.txt。
 
吴 迪 说:
准备做压力测试
 大 双 说:

吴 迪 说:
从12服务器访问11服务器
吴 迪 说:
看4个tomcat的管理页面
吴 迪 说:
现在是100个并发
吴 迪 说:
永远循环
吴 迪 说:
查看各项参数
吴 迪 说:
访问页是 /index.jsp?cache=false
 大 双 说:

 大 双 说:
你访问的是那个页面?
 大 双 说:
首页?
吴 迪 说:
是的
吴 迪 说:
 /index.jsp?cache=false
 大 双 说:
我在生成页面的时候,用了同步关键字
 大 双 说:
所以,我估计是等待
 大 双 说:
首页生成的时候,其它访问首页的请求都等待
吴 迪 说:
4号TOMCAT出现异常
吴 迪 说:
连接异常
吴 迪 说:
可能跟连接数的设置有关
吴 迪 说:
连接被拒绝
 大 双 说:
嗯,等等,这样测试,把首页生成静态页面的代码去掉
 大 双 说:
再试一次,看是不是生成静态页面出的问题
吴 迪 说:
我先停掉
 大 双 说:
你刚才是访问的index.jsp?cache=false ,还是index.jsp?
吴 迪 说:
index.jsp?cache=false
吴 迪 说:
现在你能打开动态页面吗?
吴 迪 说:
我还没有停
吴 迪 说:
你看看能不能打开
 大 双 说:
能打开
吴 迪 说:
压力确实被分散了
吴 迪 说:
我这样做负载均衡还是很有效的
吴 迪 说:
我现在停掉
 大 双 说:
好,
 大 双 说:
我现在把首页上生成静态页面的方法去了
 大 双 说:
再测一次
吴 迪 说:
用什么地址访问?
 大 双 说:
index.jsp?cache=new
 大 双 说:
换个参数
吴 迪 说:
准备开始
 大 双 说:
==
 大 双 说:
好像还没改过来
吴 迪 说:
开始了
 大 双 说:

 大 双 说:
改过来了,
 大 双 说:
现在是动态的了
 大 双 说:
数据库好像100%
吴 迪 说:
数据库CPU怎么样?
 大 双 说:
数据库好100%
吴 迪 说:
数据库100%?
 大 双 说:
13机器cpu一直100%
吴 迪 说:
截个图,这很说明问题
 大 双 说:
瓶颈在数据库上
吴 迪 说:
截个图到时候给老于看
 大 双 发送:
 
  打开(Alt+P)
 大 双 说:
你看看
 大 双 说:
现在tomcat有没有抛连接失败的错误?
吴 迪 说:
没有
 大 双 说:
现在我这边动态页面还是可以打开,只是比较慢
吴 迪 说:
静态还可以
吴 迪 说:
动态的我这边几乎打不开了
 大 双 说:
现在只有100的并发量?
吴 迪 说:
很慢很慢
吴 迪 说:
是的,100
 大 双 说:
我这能打开,可以打圈子的页面
吴 迪 说:
我在开企业登陆以后的页面
 大 双 说:
对了,看下机房提供的流量图
吴 迪 说:

 大 双 说:
看超过带宽没?
 大 双 说:
地址也发我一个
 大 双 说:
我这能企业登陆,速度还算可以忍受
吴 迪 说:
http://****************/
 
  您成功地从  大 双 处接收了 C:/Documents and Settings/KenWu/My Documents/cpu.BMP。
 
吴 迪 说:
我靠,DB的CPU100%真扎实
 大 双 说:
嗯,一直100%,不过我这还可以进企业中心操作
 大 双 说:
现在比刚才慢了,
吴 迪 说:
用文秘的页面测试吧,或者多加几个页面
吴 迪 说:
用流量较大的页面,看看会不会超过流量
 大 双 说:
可能浏览器会自动选择局域网方式连接,
 大 双 说:
带宽没超过
吴 迪 说:
不会的,我想不会的
 大 双 说:
主要看数据库连接会不会断掉
 大 双 说:
刚才生成静态页面的代码会不会有影响,好像去了后,连接要稳定些
吴 迪 说:
快找几个流量大的页面
吴 迪 说:
要动态的
吴 迪 说:
耶,我现在访问动态页面好快
 大 双 说:
http://www.****.com/activity/beautifulsecy/index.jsp?cache=false
 大 双 说:
这个页面比较大,都是图
吴 迪 说:
参数是对的吗?要不要cache=new?
 大 双 说:
都可以
吴 迪 说:
哦,想起来了,这个测试工具不能下载图片
吴 迪 说:
只能下载HTML
吴 迪 说:
我们做测试的这段时间流量好像在下降
 大 双 说:
嗯,会不会机房只统计从外面ip来的流量
 大 双 说:
机房自己的机器不在其中,
吴 迪 说:
我们自己的访问统计呢?
 大 双 说:
我们自己的访问统计应该能统计这段时间首页的流量
 大 双 说:
这段时间数据库连接断过没有?
吴 迪 说:
未见异常
吴 迪 说:
// Send message
javax.mail.MessagingException: Could not connect to SMTP host: www.****.co
m, port: 25
        at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:855)
        at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:15
6)
        at javax.mail.Service.connect(Service.java:234)
        at javax.mail.Service.connect(Service.java:135)
        at dot.st
吴 迪 说:
连邮件服务器倒是出了连接异常
 大 双 说:
这个正常,是太忙了,
吴 迪 说:
现在再加大并发,150试试
 大 双 说:
你先停一下,我把生成静态页面的加上,再测一次,看连接会不会断来
吴 迪 说:

吴 迪 说:
你先改,我现在停掉
吴 迪 说:
停了
 大 双 说:
我改了
吴 迪 说:
你用VNC登陆的?
 大 双 说:
再测一次,嗯
 大 双 说:
PC any连不上了
吴 迪 说:
即将开始测试,并发100
吴 迪 说:
已经开始,并发已经达到100
 大 双 说:
好,还是首页index.jsp?cache=new就行
吴 迪 说:
是的还是首页
 大 双 说:
现在数据库cpu很闲,
 大 双 说:
看来静态页面是有效果的
吴 迪 说:
你观察tomcat
吴 迪 说:
那肯定了
 大 双 说:
数据库cpu到100%了
吴 迪 说:
静态页面还是很快,但是动态页面不行了
吴 迪 说:
3号猫是不是挂了
 大 双 说:
没有吧
吴 迪 说:
哦,没有
 大 双 说:
再停一下,刚才没调用到生成静态页面的地方
 大 双 说:
你要访问index.jsp才行,后面不跟参数
吴 迪 说:
打算写个程序来统计这几个CAT的实时运行参数才行,这样刷页面太不方便了
吴 迪 说:
我现在停
 大 双 说:

吴 迪 说:
都有没有连接异常?
 大 双 说:
没有
吴 迪 说:
数据库现在应该下来了吧
 大 双 说:

 大 双 说:
下来了
吴 迪 说:
我现在改测试地址
 大 双 说:

吴 迪 说:
改了,准备开始测试
 大 双 说:

吴 迪 说:
刚才的测试,在12上没有报连接异常
 大 双 说:

吴 迪 说:
测试已经开始
吴 迪 说:
这个时候出现了很多59.151.*.* www.****.com GET /index.jsp?cache=false HTTP/1.1
 大 双 说:
是的
吴 迪 说:
在MANAGER里面
吴 迪 说:
现在总的Current thread busy提高了好几倍
吴 迪 说:
这个地方有问题
 大 双 说:
现在数据库cpu还是100%
 大 双 说:
好像静态页面没起来效果一样
吴 迪 说:
我认为出现59.151.*.* www.****.com GET /index.jsp?cache=false HTTP/1.1
不正常
 大 双 说:
理论上讲直接跳到静态页面应该不占数据库
吴 迪 说:
只是跳吗?只是转向?
 大 双 说:
是的,我再看一下那段代码
吴 迪 说:
现在的并发大概200多
吴 迪 说:
而实际的并发只有100
吴 迪 说:
我估计上午10点出现的问题就是这个导致的.
 大 双 说:
嗯,是有问题
 大 双 说:
并发量好像扩大了一倍
吴 迪 说:
不过现在静态页面还能很顺利地打开
吴 迪 说:
是的,本来只有100的并发量,现在算起来有近200
 大 双 说:
<%if(request.getParameter("cache")==null){%>
<jsp:include page='cache/cache_page.jsp' flush='true'>
<jsp aram name="HttpRoot" value="http://www.****.com"></jsp aram>
<jsp aram name="FilePath" value="/"></jsp aram>
<jsp aram name="CurrentURL" value="/index.jsp"></jsp aram>
</jsp:include>
<%
return;
}%>
 大 双 说:
我估计在return;后面的代码,在tomcat里执行了...
 大 双 说:
这样一来,静态页面和动态页都打了
吴 迪 说:
我也在怀疑return到底有没有结束
 大 双 说:
你现在再试试,访问www.****.com
吴 迪 说:
你要看缓存里被编译过的那个SERVLET的源代码
 大 双 说:
这个默认的是静态页面,看此时的数据库压力大不大
吴 迪 说:
你的意思是现在测试WWW.****.COM?
 大 双 说:
是的
吴 迪 说:
我觉得现在访问动态页面还行,不是很慢,还能接受
 大 双 说:

吴 迪 说:
我现在停测试
 大 双 说:
但现在数据库cpu是100%
吴 迪 说:
看来数据库有必要加CPU
 大 双 说:
嗯,明天可能得去机房
 大 双 说:
刚才张总说了
 大 双 说:
他在线
吴 迪 说:
 :(
 大 双 说:
现在启动www.****.com测试没
吴 迪 说:
准备启动
 大 双 说:

吴 迪 说:
已经启动
吴 迪 说:
对TOMCAT没有影响
吴 迪 说:
数据库呢?
 大 双 说:
数据库好像没有明显的影响
 大 双 说:
TOMCAT也没有明显的影响
吴 迪 说:
我现在用并发800试试
 大 双 说:
==
 大 双 说:
观察一下
吴 迪 说:

吴 迪 说:
这完全由APACHE承担
吴 迪 说:
我估计给APACHE加到800都不会有问题
 大 双 说:
嗯,看来静态页面优化很重要,我之前做的有问题
吴 迪 说:
明天还是把那一段去掉吧,要不然并发又会加倍
 大 双 说:

吴 迪 说:
你现在去掉,我把并发加到800,加到动态页面上
 大 双 说:
我刚去了
吴 迪 说:
我现在可以开始测试吗?
 大 双 说:
可以
吴 迪 说:
哪个页面?
吴 迪 说:
要动态的
 大 双 说:
http://www.****.com/index.jsp
 大 双 说:
不用参数就行
吴 迪 说:
好,稍等
吴 迪 说:
准备开始
吴 迪 说:
已经开始
吴 迪 说:
现在是100
 大 双 说:
数据库cpu到100%
吴 迪 说:
每个猫上的压力25左右
 大 双 说:

吴 迪 说:
4个猫刚好100压力
 大 双 说:
是的,
吴 迪 说:
现在我停掉,改用800
 大 双 说:

吴 迪 说:
准备观察数据库,tomcat的连接情况
 大 双 说:

吴 迪 说:
准备开始
吴 迪 说:
已经开始
吴 迪 说:
测试并发已经达到800
吴 迪 说:
3号tomcat Current thread busy: 208
 大 双 说:
嗯,差不多200左右
吴 迪 说:
1号 Current thread busy: 208
吴 迪 说:
4号 Current thread busy: 211
 大 双 说:
11上tomcat好像没占多少cpu
 大 双 说:
数据库cpu还是100%
吴 迪 说:
2号 Current thread busy: 220
吴 迪 说:
4个猫,刚好800
吴 迪 说:
连接有没有异常?
 大 双 说:
异常了
 大 双 说:
连接异常了
吴 迪 说:
连接?
 大 双 说:
是的
吴 迪 说:
我进VNC看看
 大 双 说:
java.sql.SQLException: Network error IOException: Connection refused: connect
        at net.sourceforge.jtds.jdbc.ConnectionJDBC2.(ConnectionJDBC2.java
:372)
        at net.sourceforge.jtds.jdbc.ConnectionJDBC3.(ConnectionJDBC3.java
 大 双 说:

吴 迪 说:
连接被拒绝了
吴 迪 说:
你试试开动态页面
 大 双 说:
基本打不开
 大 双 说:
很慢,哦,打开了
 大 双 说:
还是可以打开,只是比较慢,我连打了六个页面,都开了,都是职位显示页
吴 迪 说:
连接被拒绝的异常不频繁
吴 迪 说:
不是致命的异常
 大 双 说:
现在tomcat后台连接数好像少了
吴 迪 说:
tomcat仍然在运行
 大 双 说:
每个只有几十
 大 双 说:
 Current thread busy: 37
吴 迪 说:
测试并发还是800
吴 迪 说:
我也看到了,确实少了很多
吴 迪 说:
很奇怪的现象
 大 双 说:
是啊,而且现在页面速度好像变快了
吴 迪 说:
八成是回光返照
 大 双 说:

 大 双 说:
一两秒可以打开页面
 大 双 说:
但数据库cpu一直是100%
吴 迪 说:
tomcat没有报拒绝连接异常
吴 迪 说:
我把测试停了再开
 大 双 说:
会不会是缓存的作用
 大 双 说:
apache?tomcat?
吴 迪 说:
什么缓存?
 大 双 说:
apache 的缓存?
 大 双 说:
c:/下的文件?
吴 迪 说:
APACHE的磁盘缓存已经停了
 大 双 说:

吴 迪 说:
准备开测试,并发800
 大 双 说:
==
 大 双 说:
刚才停了吗?
 大 双 说:
怎么数据库cpu还是100%
吴 迪 说:
还没有停止
 大 双 说:
现在降了
 大 双 说:
现在降下来了
 大 双 说:
你还不回去?
吴 迪 说:
准备开始
 大 双 说:
很晚了........
吴 迪 说:
我的钥匙被那个**拿走了
 大 双 说:
呵,明天再测吧
吴 迪 说:
开始测试
吴 迪 说:
现在并发800
 大 双 说:

 大 双 说:
现在每个是200左右
吴 迪 说:
2号tomcat连接池死锁
吴 迪 说:
1号 死锁
吴 迪 说:
4号报死锁
 大 双 说:
是之前那个错误么?
 大 双 说:
No buffer space available (maximum connecti
ons reached?): connect?
吴 迪 说:
不是这个
吴 迪 说:
非致命的警告,警告而已.
 大 双 说:

吴 迪 说:
看看动静页面能不能开
 大 双 说:
动态页面很慢,基本打不开,
吴 迪 说:
静态页面没有问题
吴 迪 说:
动态页面基本可以开
 大 双 说:
静态页面可以打开,还行
吴 迪 说:
很慢
 大 双 说:
嗯,动态页面过一会还是可以开
吴 迪 说:
http://www.***.com/activity/beautifulsecy/index.jsp?cache=false
可以开,还行
 大 双 说:
静态页面
 大 双 说:
Current thread busy: 4
 大 双 说:
又降了
 大 双 说:
每个tomcat的都降了
吴 迪 说:
看到了
吴 迪 说:
数据库呢?
 大 双 说:
数据库也降了
 大 双 说:
是不是没有压力测试了?
 大 双 说:
还是压力测试的程序死了?
吴 迪 说:
测试没有停
 大 双 说:
早点休息吧,我不行了,明天再测吧....
吴 迪 说:
就这样吧,基本上有结论了,那就是:网站可以承受800的并发,并且压力越大tomcat越闲,
于是老于笑了....
我回去睡觉了,12点了.
吴 迪 说:
哦对了,停掉测试
 大 双 说:
好,呵
 大 双 说:
886
吴 迪 说:
我走啦
吴 迪 说:
88

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值