全部博文(1015)
分类: Java
2016-08-20 12:39:36
在下对weblogic了解甚少,对java开发也是丈二和尚,身边也没有懂weblogic的人,看来只能借助网络搜索了。百度、ITpub、CSDN全试了都没有相关问题。后来加了几个weblogic的qq群,在群里发问基本也是没人管。哎,这世界怎么就没有个好心人呢?不过好心人最终还是出现了,他直接就找到了问题所在——这个问题的原因就在启动参数上。(就是啊,重新启动都不行,那十有八九是启动参数的问题啊,我这笨脑子!)
造成这种情况的参数在weblogic\user_projects\domains\base_domain\bin下的setDomainEnvNaNd中的Dweblogic.threadpool.MinPoolSize。我的配置是这样的:
JAVA_OPTIONS="${JAVA_OPTIONS}${JAVA_PROPERTIES} -Dwlw.iterativeDev=${iterativeDevFlag}-Dwlw.testConsole=${testConsoleFlag} -Dweblogic.threadpool.MinPoolSize=2000 -Dweblogic.threadpool.MaxPoolSize=4000-Dwlw.logErrorsToConsole=${logErrorsToConsoleFlag}"
exportJAVA_OPTIONS
这里的-Dweblogic.threadpool.MinPoolSize=2000意思是默认线程池大小,这个参数设置多少合适我也不知道,具体设置于不设置有什么大的区别也不知道……额,反正是它在搞鬼。我将此参数去掉之后,重新启动,活动线程变少了。
网抄一些weblogic的知识,留作备查——————
检查线程数
通过weblogic控制台可以查看线程数的统计信息。weblogic9及以上的线程是自优化的。但应该查看系统的线程最大数是否过大,如果过大,就要注意系统为什么会有这么大的压力。如下为示例截图
对应中文翻译:
ActiveExecute Threads:在活动的线程池内处理请求的线程个数
ExecuteThread Total Count:线程池内线程的总数
ExecuteThread Idle Count:池内的空闲线程数。它不包含stuck和standby的线程数。它是指等待接收新请求到来并处理的线程个数
queuelength :在等待队列里的请求数,通常保留默认值 65536 ,队列长度表明了同时发来请求的最大数, 65536 个请求是个很大的数,即使达到这个最大数,也是很少见的。如果达到最大队列长度,WebLogic 会自动成倍增长队列大小,以处理额外的工作。 注意:超过 65536 个请求预示队列中的线程有问题,不仅仅只是队列本身的长度问题,实践表明在队列中有堵塞线程或线程数不足的情况存在。
hoggingthread count :线程处理一个请求时间超过一定值被视为hogging状态,如果继续处理请求超过一定时间将被视为stuck,或处理完请求后被放回线程池
standbythread count :统计在standby(备用)线程池内的线程数。这些线程不需要处理当前请求被放入standby池内,当活动的线程池内需要更多线程时,这些线程将被激活。
Execute Thread Total Count= Active Execute Threads+ standbythread count