运维日记|中间件weblogic排错思路 – 作者:database

大家有没有碰到过访问web网站或者web应用时,发现一直转圈圈就是打不开,或者好久才能打开,当然这种情况平时很少碰到。

但也有特定的时候会碰上,例如在春运时,买火车票,在刚放票的时候,大家一定遇到过下面这种情况。

image.png

或者在双十一凌晨淘宝购物时,这个界面想必大家一定不陌生。

image.png

上面的问题主要在于流量太大,但中间件却来不及处理造成的,用到的中间件不一定是weblogic,但总体解决思路还是一样的。

下面我们看看某政府机关部署在weblogic上的应用,也碰到类似上面这种情况,经常不能打开网页时的解决办法。

解决思路:

首先看一下weblogic中间件的日志,检查domain下servers/服务名/logs/服务名.log,检查发现有很多stack日志,如下图所示:

image.png

根据日志,线程10分钟没处理完就触发stack情况,那么我们需要去排查下哪些线程发生了stack,登录控制台http://ip:7001/console

weblogic的管理控制台默认是7001,这个端口在管理服务启动日志中也可以看出来,如下面:

image.png

启动完成的running上面就有显示ip和端口。在控制台的server中,发现很多warning告警。

image.png

这些告警都是由于部分线程处理超过10分钟未中断,导致告警,并导致线程堆积,后续访问数据返回异常或超时。

image.png

有队列堆积后,在访问网站时就出现转圈圈现象,除非积压队列处理完,轮到处理我们访问的请求。既然有堆积就说明来不及处理,像上面执行的线程总数才158,这说明线程数分配不够,通过“ps -ef|grep java”发现配置参数里只有内存配置“-Xms4096m -Xmx4096m -XX:-UseParallelGC -XX:PermSize=980m -XX:MaxPermSize=980m”,并没有线程数配置,所以线程数就是默认大小,达到158就上不去了。

另外stack线程太多,这些stack线程都没有释放。点击线程“粘滞”安排进行排序,如下:

image.png

把粘滞为true的排到前面来,粘滞为true说明这些进程处理了10分钟还没有处理完成,这个粘滞时间为什么是10分钟呢,我们可以看一下超载配置,在“服务器-服务名称-超载”,有个最长线程粘滞时间,这个默认配置就是600秒,刚好10分钟,如下图:

image.png

这个配置主要用来超过这个时间做告警用,所以有stack告警,就需要检查这个线程的逻辑情况。

通过上面线程情况,我们发现,全部都是下面这个线程超时卡住了。

image.png

接下来,我们最多只要把线程连接数加上去一些,剩下的就只要联系开发对该线程进行优化处理就好了,如果应用不优化,线程连接数不管增加多少也会耗尽的,上面就是weblogic中间件问题处理排查思路。


美创运维中心数据库服务团队拥有Oracle ACE 1人、OCM 10余人、数十名Oracle OCP、MySQL OCP、红帽RHCA、中间件weblogic、tuxedo认证、达梦工程师 ,著有《Oracle DBA实战攻略》,《Oracle数据库性能优化方法和最佳实践》,《Oracle内核技术揭秘》等多本数据运维优化书籍。目前运维各类数据库合计2000余套,精通Oracle、MySQL、SQLServer、DB2、PostgreSQL、达梦等主流商业和开源数据库。并成为首批国内达梦战略合作伙伴之一,拥有海量经验和完善的人员培养体系。并同时提供超融合,私有云整体解决方案。

来源:freebuf.com 2020-06-02 16:06:38 by: database

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论