WAS7 ND+IHS性能调优出现的相关问题解决办法2

巧妇难为无米之炊,看来短时间无法解决down机的问题了。只能先找到具体出问题的地方了。再针对性优化网站了。整个优化过程走了不少弯路,有些地方是改了之后又改回来。

以下是监控和分析处理和优化过程:

第1天:白天做压力,100个时开始监控到泄漏,但之后几千并发没未宕机!(说明网页访问的压力还能承受住)

第2,3天周六日:经过讨论,有人认为首页的太多的iframe 或导致并发太高而且重复引用JS,影响性能。因此由设计人员查看代码,实现去iframe和采用页面缓存oscache技术改写首页。(走了弯路…)

同时考虑启用IHS进行请求转发,静态化文件处理。

第4天:在前次的修改中,由于操作系统内码问题和程序需要变化,没有来及启用IHS,加上积压的访问下载需要,导致今天更为严重的死机现象(5次)

(走了弯路的结果就是离目标越来越远,情况更加严重!)

不得已,晚上先把IHS装上,以便监控请求日志。

第5天:上午监控,网站正常,was正常且内存几乎不变化,下载快,netstat监控约1500链接;Http进程20个,每个占280M内存,逐渐占满OS内存。17点死机。(19点钟reboot,到21:22分,分析IHS日志,共有2702个附件下载。预计白天比这要多)(说明网站存在大量的下载,而且很多都是下载工具产生的连接,例如迅雷。这种下载会产生大量连接,并且长期暂用!)

 
 

第6天:下午17点前死机(今天1次)。应该是was堆满。有jc和dump,分析jc有log 写锁或等待。发现Downloadservlet(下载的处理程序)有未关闭连接等问题,修改为不用流而直接跳转到HTTP静态直接下载。

(说明下载的程序有问题,经过分析,需要将下载的工作交给IHS来处理,走WAS的话容易导致死锁,线程等待。)

 
 

第7天:未死机。监控系统内存满,WAS JVM的heap满,有死机的征兆。人为重启。

第8天:白天正常。18点多系统宕机崩溃,产生jc和dump。

第8天以后的死机,确定是OSCache组件不稳定,在WAS环境下出现了内存泄露,最后去掉OSCache,但页面速度比较慢,需要5秒才能打开。项目组最后解决方法是:将首页静态化,目录菜单静态化。

(从弯路上饶了回来)

 
 

总结最终的解决办法:

网站的网页的压力基本上还是能承受住,虽然可能首页人多的是会慢一些,问题主要出在文件的下载这块。下载的程序是通过WAS直接处理的,导致大文件下载长期暂有连接和数据库连接,最终导致系统崩溃。

解决措施:

1、网站首页静态化,所有的菜单栏等数据库访问量较多的地方也静态化处理。

2、安装IHS, 通过IHS转发请求到 WAS上的网站服务。因为IHS对于长连接的请求会有中断处理,有些超时没有响应的请求会自动关闭,这点WAS好像就比较难处理。

3、将文件下载的工作通过IHS静态化文件进行处理。幸好我们的所有附件都是放在文件服务器上,可以通过配置静态化目录,来实现对这些文件的访问,同时屏蔽掉WAS下面的文件下载程序应用包。

4、调低应用中的日志级别,因为日志级别和调试输出的大量数据,导致WAS可能会忙于进行文件IO操作,反应降低,然后循环恶性发展,使系统处于假崩溃状态!

 
 

最终网站服务器的部署环境如下:

操作系统: RHEL 5.5

应用服务器: WAS 7 单节点+ IHS

WAS参数:

数据源连接池:200

    JVM堆大小: 256M到1024M

    启用 servlet 高速缓存 

    会话最大1000,允许溢出,会话超时2分钟。 因为网站基本上没什么会话数据需要保存,所以设短一点,避免暂用大量内存。

    线程池50到100,允许溢出

HIS配置文件httpd.conf关键参数:

LogLevel error (调整日志级别)

#CustomLog logs/access_log common (屏蔽该日志)

Alias /fileStorage    “/nfs/datafile/” (指定静态化文件目录)

<IfModule prefork.c> (调整IHS的最大并发数)

ServerLimit 16

StartServers 5

MinSpareServers 5

MaxSpareServers 15

MaxClients     600

MaxRequestsPerChild 3000

</IfModule>

KeepAlive On (调整IHS的请求的最长连接时间以及超时时间,由于网站的特殊性,所以连接不能太长,不然占用资源不释放,就会容易导致死机或者无法访问)

MaxKeepAliveRequests 500

KeepAliveTimeout 5

 
 

数据库:Orcale 11g

 
 

整个优化到这里基本上就完了。 下面是一些配置上面的心得,希望对大家有用。

 
 

1、分析网站连接问题的脚本和工具:

1)分析哪种tcp状态数量异常:

netstat -nat|awk ‘{print awk $NF}’|sort|uniq -c|sort –n

在网站访问量压力较大情况性下,如果发现time_wait、Fin_wait1等较多,考虑修改linux系统etc/sysctl.conf文件。

可参考文档:http://wenku.baidu.com/view/7a04e2d284254b35eefd3408.html

2)将请求80服务的client ip按照连接数排序:

netstat -nat|grep “:80″|awk ‘{print $5}’ |awk -F: ‘{print $1}’ | sort| uniq -c|sort –n

用于查找恶意连接IP。

3)使用HttpWatch软件

在需要分析网页下载效率时使用。避免网站页面中(特别是首页)出现较大图片、JS等对象。通过该软件可以看到各个URL的访问时间,便于针对性优化。

 
 

2、动静分离的配置:

WAS+ IHS动静分离的配置在网上查了下,有个几个方法:

1)        一个比较麻烦的方法就是屏蔽静态内容通过 WebSphere Application Server 中的 File Serving 功能从 WAR 文件返回的功能。需要修改一堆配置文件,然后要重新产生插件等等。 比较麻烦,而且容易出错,这里就不讲了。大家有兴趣可以参考:

http://space.itpub.net/14789789/viewspace-628556

 
 

2)        第二种比较简单的就是把静态化的文件直接放到 IHS 服务器,通过IHS直接处理,不走WAS。本项目就是采用的这种。

3)        第三种就是购买 WebSphere Edge Server(简称 Edge Server)产品来实现了。

 
 

下面主要讲第二种的配置:

以下文章点击率最高

Loading…

     

如果这文章对你有帮助,请扫左上角微信支付-支付宝,给于打赏,以助博客运营

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注