freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

运维日记|中间件weblogic排错思路
2020-06-02 16:06:38

大家有没有碰到过访问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 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者