2019独角兽企业重金招聘Python工程师标准>>>

服务器宕机排查记录

问题症状 :服务器内存占用持续增长,性能低下,并发上不去,隔几天宕机

排查思路 :分析出内存泄露模块,分析出性能瓶颈,调优JVM

使用工具 :jconsole、jprofiler

使用jconsole连接,经过测试得到如下图表,可能为JVM配置不当或内存泄露

通过thread dump发现线程大都阻在HTTPCLIENT获取连接方法上,经分析可能为HTTPCLIENT连接未及时释放

问题一:HTTPCLIENT连接没有真正释放

THREAD DUMP日志

"[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'" id=50 idx=0xbc tid=1596 prio=5 alive, in native, waiting, daemon
-- Waiting for notification on: org/apache/commons/httpclient

/MultiThreadedHttpConnectionManager$ConnectionPool@0x03801D20[fat lock]
at jrockit/vm/Threads.waitForNotifySignal(JLjava/lang/Object;)Z(Native Method)
at java/lang/Object.wait(J)V(Native Method)[optimized]
at org/apache/commons/httpclient/MultiThreadedHttpConnectionManager.doGetConnection

(MultiThreadedHttpConnectionManager.java:518)[optimized]
^-- Lock released while waiting: org/apache/commons/httpclient

/MultiThreadedHttpConnectionManager$ConnectionPool@0x03801D20[fat lock]
at org/apache/commons/httpclient/MultiThreadedHttpConnectionManager

.getConnectionWithTimeout(MultiThreadedHttpConnectionManager.java:416)[optimized]
at org/apache/commons/httpclient/HttpMethodDirector.executeMethod(HttpMethodDirector

.java:153)[optimized]

at org/apache/commons/httpclient/HttpClient.executeMethod(HttpClient.java:397)[optimized]

at org/apache/commons/httpclient/HttpClient.executeMethod(HttpClient.java:346)[inlined]

解决办法 :释放连接,为了避免产生大量CLOSE_WAIT,定期关闭空闲连接:

h ttpMethod.releaseConnection();

connectionManager . closeIdleConnections (3000);

问题二:JVM调优,开启JMX服务,使用JCONSOLE连接

SUN JDK

-Xms 1024m

-Xmx1024m

-Xss192k

-XX:PermSize=192M

-XX:+UseParallelGC

- XX:ParallelGCThread=8  

-Djava.rmi.server.hostname=172.30.0.232

-Dcom.sun.management.jmxremote.port=7001

-Dcom.sun.management.jmxremote.authenticate=false

-Dcom.sun.management.jmxremote.ssl=false

【调优后】

服务器经过72小时的压力测试,线程数增加了100个,服务器内存增加了50M,总访问次数291万次,我们判断服务器目前运行正常,今天主要分析了线程数和内存增加的原因。

从内存占用情况来看,内存最低能释放到170M左右,之前是120M左右,增长了50M左右
        

从线程图表上看,有过两次线程增长,且堆栈内存占用都有增加,但是这次的线程数增长和上次不一样,我们的依据是Thread Dump抓包分析、日志分析、console后台分析,上次是由于tmp下文件过多,导致读取本地文件出现IO超时,而导致线程数急剧增长(400个);而这次应该是由于网络问题(ERR日志中有一些Read Time Out异常)而导致某时段内网络出现阻塞,weblogic的线程管理器进行了自动优化,增加一些线程,另外单个HOST最大只能创建100个连接,也与这次线程增长数吻合,线程增长,栈内存增长(20M左右),线程中用到对象实例,堆内存自然增长(50M左右),似乎也合理,依据此我们判断目前服务器运行正常。

从LoadRunner图表来看,周末网络情况似乎不错,TPS能到16,响应时间也在2S内,比上次图表好看,依然是凌晨的网络比白天的好
    

问题三:内存泄露

通过JMAP命令分析发现jtidy存在内存泄露,经过分析发现时在在异常时没有释放资源

1371376      164565120  org.w3c.tidy.Node3

1413005      169560600  org.w3c.tidy.Node

1437838      172540560  org.w3c.tidy.Node

问题四:连接数暴涨,分析发现磁盘已满

问题五:性能瓶颈,通过JPROFILER分析,找出消耗时间最多的方法,进行优化

分析发现,字符串操作耗时大,XSLT解析XML耗时大,优化,合理使用缓存

问题六:数据库连接达到上限

####<2011-8-25 上午08时21分07秒 CST> <Info> <Console> <RD-DCM-03> <AdminServer> <[ACTIVE] ExecuteThread: '32' for queue: 'weblogic.kernel.Default (self-tuning)'> <weblogic> <> <> <1314231667171> <BEA-240002> <Struts module /core is configured to use com.bea.console.internal.ConsolePageFlowRequestProcessor as the request processor, but the <controller> element does not contain a <set-property> for "controllerClass".  Page Flow actions in this module may not be handled correctly.>
####<2011-8-25 上午08时21分07秒 CST> <Info> <Console> <RD-DCM-03> <AdminServer> <[ACTIVE] ExecuteThread: '32' for queue: 'weblogic.kernel.Default (self-tuning)'> <weblogic> <> <> <1314231667171> <BEA-240001> <Attempting to instantiate SharedFlowControllers for request /console/core/CoreServerThreadStackDump.do>
####<2011-8-25 上午08时21分07秒 CST> <Info> <Console> <RD-DCM-03> <AdminServer> <[ACTIVE] ExecuteThread: '32' for queue: 'weblogic.kernel.Default (self-tuning)'> <weblogic> <> <> <1314231667171> <BEA-240001> <<ConsoleInteraction: User is viewing <com.bea.console.actions.core.server.ThreadStackDumpAction> for <Server> <com.bea.console.handles.JMXHandle%28%22com.bea%3AName%3DAdminServer%2CType%3DServer%22%29>>>
####<2011-8-25 上午08时21分17秒 CST> <Info> <Common> <RD-DCM-03> <AdminServer> <[ACTIVE] ExecuteThread: '26' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <> <1314231677484> <BEA-000627> <Reached maximum capacity of pool "dcm", making "0" new resource instances instead of "1".>
####<2011-8-25 上午08时21分17秒 CST> <Info> <Common> <RD-DCM-03> <AdminServer> <[ACTIVE] ExecuteThread: '27' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <> <1314231677500> <BEA-000627> <Reached maximum capacity of pool "dcm", making "0" new resource instances instead of "1".>

JDBC连接池到达极限,设置JDBC Connection Max Capacity

问题七:其他问题

使用jps查看java进程id时,显示process informatin unavailable,且jstat无法连接,即无法图形化查看JVM运行情况,对排查问题造成不便,排查发现是管理员帐号中存在"_",最后更换管理员帐号启动脚本,正常

转载于:https://my.oschina.net/u/3553440/blog/1542384

服务器经常宕机,排查问题思路相关推荐

  1. java 宕机_Java应用/JVM宕机排查步骤操作

    相信大家都遇到过,自己的Java应用运行一段时间就宕机了或者响应请求特别慢.这时候就需要我们了来找出问题所在了.绝大部分都是代码问题导致的. 一.服务宕机 如果是服务宕机,发生致命问题导致进程已经死掉 ...

  2. web网站服务器宕机应急,web服务器的宕机诊断方法

    宕机诊断方法编辑步骤1:发生了什么事 系统管理员必须肩负起分析和判断Web服务器宕机原因的责任.需要解决如下的问题: 是否是断电,发电机测试以及其他类似问题影响了整体物理环境? 和Web服务器的通信是 ...

  3. 想服务器不宕机,你了解Linux“体检”指标吗?

    前言 在"求佛保佑服务器不宕机"."杀程序员祭天"的环境下,程序员每天可谓是战战兢兢,接到电话和短信都吓得瑟瑟发抖,为了我们的安全,及时发现服务器运行问题已不仅 ...

  4. 祝愿天下所有运维的服务器永不宕机!

    虽然今天才周五,但周末就是举国欢庆的除夕和春节了,不过对运维来说,要7*24守护系统,就算放年假也要背着笔记本以便随时远程支撑. 系统出现不稳定有人为因素,也有非人为因素,毕竟底层的服务器.存储这些硬 ...

  5. 服务器又宕机了,怎么办?

    我不得不承认,我的能力不足以写出一个100%不会宕机的游戏服务器程序,这也不能全怪我的能力太弱,谁让咱国内网游玩家数量庞大,哪个游戏刚上线时没有挤的爆满过?还有些或是猎奇,或是谋私的个人和组织,在制造 ...

  6. 服务器出现宕机可能的原因以及解决办法介绍

    原文地址 服务器宕机是指服务器因为某些原因而导致服务器无法运转,造成网络无法正常使用. 对于网站来说,服务器宕机所造成影响很大,它不但造成访客无妨对网站进行访问,甚至还可能影响到网站在搜索引擎上的收录 ...

  7. 古剑奇谭网络版服务器位置,《古剑奇谭网络版》网络版:保佑服务器不宕机是靠玩家做的平安符...

    [摘要]在CJ2017展览会上,<古剑奇谭网络版>项目经理薛岭先生接受了腾讯游戏频道的专访.薛岭表示<古剑奇谭网络版>在封测中有了新的调整方向. 腾讯游戏讯 7月27日消息,2 ...

  8. 服务器出现宕机可能的原因以及解决办法

    点击查看全文 - 本帖被 火蓝云 从 云服务器 ECS 移动到本区(2017-08-08) - 服务器宕机是指服务器因为某些原因而导致服务器无法运转,造成网络无法正常使用. 对于网站来说,服务器宕机所 ...

  9. Ubuntu服务器宕机排查记录

    环境 :ubuntu 问题症状:服务器内存占用持续增长,性能低下,并发上不去,网络无法ping通,无法登录.无法操作,输入操作无响应.也就是说系统宕机了. 宕机原因 : 先查看线上服务日志,再通过分析 ...

最新文章

  1. 微信小程序之录音与播放功能(完整示例demo)
  2. 如何用TensorFlow在安卓设备上实现深度学习推断
  3. 转:QQ圈子:社交神器还是隐私魔鬼?
  4. C/C++ 中访问结构体成员的方法
  5. pyhon制作word、excel、ppt转pdf转换器大作战
  6. 【Linux】17.Ubuntu16.04 系统添加网关和DNS的两种方式
  7. OpenGL绘制一个三角形
  8. linux下启动solr命令,如何自动启动Solr?
  9. linux漏洞知乎_Linux本地内核提权漏洞(CVE-2019-13272)
  10. 关于Java的静态初始化块
  11. Storm的Metric接口简介
  12. mysql 存储过程 锁表_MYSQL锁表问题的解决方法
  13. iso27001标准动态
  14. 两步解决科来数据包生成器找不到网卡的问题
  15. TortoiseSvn和Subclipse对应关系
  16. 常用分析模型---RFM客户价值模型
  17. 为什么从此电脑访问不了ftp_蓝奏云网盘为什么访问不了?(附资源)
  18. ANDROID 学习笔记(三) UI THREAD AsyncTask 使用
  19. 当限量潮牌遇到 DeFi, 币圈项目社群当投机时尚结合加密基元
  20. 使用selenium和phantomjs解决爬虫中对渲染页面的爬取

热门文章

  1. 微服务服务降级与熔断
  2. 计算机相关实验,计算机试验简介
  3. 响应式摄影机构类网站织梦模板 HTML5高端蓝色户外摄影拍摄网站源码
  4. 老师送给学生的毕业赠言如何用云便签记录整理
  5. 2015 百度之星 初赛1 1001(贪心)
  6. 成就你一生的100个哲理1-10
  7. 一种基于数据表的共享智慧的方法
  8. 历年奥斯卡获奖影片(1927—2009)
  9. js递归函数中的执行顺序问题
  10. 从零开始搭建腾讯云上的 SpringBoot 容器化应用