这时访问apache会提示和weblogic的桥出了问题。
这个问题已经遇到很多次了,但通常都是夜间,第二天查看日志的时候,会发现那个时候确实访问量比较大。查看当时的连接情况可以看到,apache和java连接都700多。看了网上的说明,调整了系统参数、调整了weblogic的设置等,都不见效。
http://www.bea.com.cn/support_pattern/Too_Many_Open_Files_Pattern.html
http://e-docs.bea.com/wls/docs81/perform/index.html
今天又出现这个情况了,不过是白天,和web应用的作者一起对weblogic的情况进行了观察。
通过weblogic控制台,可以看到Throughput这里大都是在处理1左右的访问,Queue Length这里却在不停的涨,开始就对Thread count做了修改,从50调整到了400,但是还是可以看到Thread会用完,一会Queue Length就又涨起来了。
分析一下就可以知道,情况应该是Queue的线程对访问的处理速度太慢,导致需要处理的队列越来越多。需要处理队列的增长速度比队列的处理速度慢,这样不管有多少线程,肯定最后都会导致不够用。
现在大家就开始考虑问题是不是出在应用这里了,应用执行速度慢,weblogic线程就会一直占着,就会导致线程用尽。而实际上确实是应用这里的问题。
应用对访问的处理速度很快,有访问进来就先放到队列,而队列的处理速度却是500ms处理一下,这样一秒也就处理2个。这样问题的原因就很明确了,1s内外部访问应用可能有10来次,而应用才处理2个,所以自然会将线程占满了。
调整队列处理速度之后问题就解决了,空闲线程一直是400。