posts - 167,  comments - 30,  trackbacks - 0
          系統影響慢或可能無法訪問,服務器上發現swap占用很高,負載和cpu通過zabbix監控看比代碼升級前都要高.
          因服務器核數少,仔細觀察有一個cpu利用率一直是100%或90%+上。
          以前這類問題也遇到過,網上也有類似解決方法,這里自己做個筆記總結下。

          首先不要著急重啟服務,可以先切換到備用機器上(生產環境避免單機),保留問題現場查找原因。
          top查看CPU情況

          1)jps -m 非常方便直接定位所有的Java進程pid
          2)jstack -l pid > jstack.log命令打印棧信息,如果因某些原因無法成功打印,
               可以使用kill -3 pid,輸出到jvm日志中【resin服務器默認輸出到jvm-default.log日志中】
          3)查找占用CPU資源最高的進程id,使用top -H -p pid 查看進程pid的所有的線程,默認是按照%CPU高~低排序。
                或者直接使用top查看, shift+H顯示所有的線程,默認按照%CPU高~低排序。
                找到占用CPU利用率最高的pid,一般CPU利用率達到90%以上,將pid轉換為16進制【 linux自帶python,命令:hex(pid)】

          4)根據轉換的16進制去jstack.log日志中查找基本能定位到具體哪行代碼的問題。
          "reportThirdException" daemon prio=10 tid=0x00007f8bd450b800 nid=0x12c4 runnable [0x00007f8b906ac000]
             java.lang.Thread.State: RUNNABLE
                  at com.xxx.interfaces.util.NoticeMonitorSysHelper$ThreadStatue$1.run(NoticeMonitorSysHelper.java:167)
                  at java.lang.Thread.run(Thread.java:722) 
          posted on 2016-11-04 23:44 David1228 閱讀(2303) 評論(0)  編輯  收藏 所屬分類: JAVA 、J2EE

          <2016年11月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          文章檔案

          新聞分類

          新聞檔案

          相冊

          收藏夾

          Java

          Linux知識相關

          Spring相關

          云計算/Linux/虛擬化技術/

          友情博客

          多線程并發編程

          開源技術

          持久層技術相關

          搜索

          •  

          積分與排名

          • 積分 - 359229
          • 排名 - 154

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 垫江县| 古浪县| 岳普湖县| 德钦县| 河曲县| 宁阳县| 休宁县| 新宾| 贞丰县| 洛扎县| 佛教| 广河县| 龙南县| 吕梁市| 海原县| 钟山县| 武平县| 湾仔区| 察隅县| 乐清市| 甘泉县| 合肥市| 曲周县| 泸定县| 东山县| 都兰县| 勃利县| 安乡县| 三江| 镇赉县| 连平县| 原平市| 龙海市| 陆河县| 淳化县| 岳池县| 华池县| 江达县| 晴隆县| 中方县| 内江市|