Posted on 2007-04-20 13:06
dennis 阅读(3771)
评论(0) 编辑 收藏 所属分类:
java
最近项目的websphere经常当机,运行一段时间后变慢然后当掉。查找了下网上的资料,尽管不是我在负责服务器,但是也是个学习的机会。
主要针对的症状:
平台:was5.1 base,http server 1.3.28,oracle 8i,9i
症状:用户响应突然变慢,然后并连接不上80端口,重启后正常,一段时间后反复
解决方式:调整服务器参数,增加服务器的处理能力
1,更改http server的配置文件参数KeepAlive。
原因:这个值说明是否保持客户与HTTP SERVER的连接,如果设置为ON,则请求数到达MaxKeepAliveRequests设定值时请求将排队,导致响应变慢。
方法:打开ibm http server安装目录,打开文件夹conf,打开文件httpd.conf,查找KeepAlive值,改ON为OFF,其默认为ON
2,更改http server的配置文件参数ThreadsPerChild值到更大数目,默认为50
原因:服务器响应线程的数量
方法:打开ibm http
server安装目录,打开文件夹conf,打开文件httpd.conf,查找ThreadsPerChild值,默认为50,改到更大数目,视用户数
多少而定,一般改到客户机数量的1.1倍,如200台,则设为220
3,关闭http server日志纪录
原因:http server的日志IO影响性能
方法:打开ibm http
server安装目录,打开文件夹conf,打开文件httpd.conf,查找CustomLog值,找到没有注释的那行(行的开头没有符号"#"),
将那行用符号"#"注释掉,以关闭日志纪录,提高处理性能。
4,更改Websphere的服务器处理线程数
原因:线程的数量影响同时并发的请求数量
方法:打开管理控制台,依次打开目录树,服务器->server1->web容器->线程池,修改"最大大小"的值,默认是50,改到
更大数目,具体视总用户数量和机器的配置而定,一般设置其等于或小于http server设置的MaxKeepAliveRequests的值。
根据上面的建议,查看了下我们的服务器配置情况,倒是没什么不同,实际上导致服务相应变慢到停止,一般是由两个原因导致的
1,数据库操作时间过长(如查询),导致占用连结时间过长,然后后续请求无法及时取得连结响应请求
2,代码中一定要确保连结关闭,尤其在jsp中。后台程序要在finally中关闭
由此,我查看了System.out的日志,发现每次在当机前都有报“连接邮件服务器失败”类似的错误,我们的邮件服务器是ibm的Lotus Domino,最近的网络状况很有问题,个人怀疑是因为连接邮件服务器时间过长,导致了这种情况的发生,有待证实。