成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

線上服務內存OOM問題定位三板斧

開發 開發工具
相信大家都有感觸,線上服務內存OOM的問題,是最難定位的問題,于是我們進行了一次線上服務內存OOM問題排查實戰演練,將內存OOM問題定位三板斧分享出來。

相信大家都有感觸,線上服務內存OOM的問題,是最難定位的問題,不過歸根結底,最常見的原因:

  • 本身資源不夠
  • 申請的太多
  • 資源耗盡

58到家架構部,運維部,58速運技術部聯合進行了一次線上服務內存OOM問題排查實戰演練,將內存OOM問題定位三板斧分享出來,希望對大家也有幫助。

[[200745]]

題目

某服務器上部署了Java服務一枚,出現了OutOfMemoryError,請問有可能是什么原因,問題應該如何定位?

不妨設服務進程PID為10765(沒錯,就是CPU占用高的那個倒霉的進程《線上服務CPU100%問題快速定位實戰》)。

解決思路

Java服務OOM,最常見的原因為:

  • 有可能是內存分配確實過小,而正常業務使用了大量內存
  • 某一個對象被頻繁申請,卻沒有釋放,內存不斷泄漏,導致內存耗盡
  • 某一個資源被頻繁申請,系統資源耗盡,例如:不斷創建線程,不斷發起網絡連接

更具體的,可以使用以下的一些工具逐一排查。

一、確認是不是內存本身就分配過小

方法:

  1. jmap -heap 10765 

如上圖,可以查看新生代,老生代堆內存的分配大小以及使用情況,看是否本身分配過小。

二、找到最耗內存的對象

方法:

  1. jmap -histo:live 10765 | more 

圖示:

如上圖,輸入命令后,會以表格的形式顯示存活對象的信息,并按照所占內存大小排序:

  • 實例數
  • 所占內存大小
  • 類名

是不是很直觀?對于實例數較多,占用內存大小較多的實例/類,相關的代碼就要針對性review了。

上圖中占內存最多的對象是RingBufferLogEvent,共占用內存18M,屬于正常使用范圍。

如果發現某類對象占用內存很大(例如幾個G),很可能是類對象創建太多,且一直未釋放。例如:

  • 申請完資源后,未調用close()或dispose()釋放資源
  • 消費者消費速度慢(或停止消費了),而生產者不斷往隊列中投遞任務,導致隊列中任務累積過多

三、確認是否是資源耗盡

工具:

  • pstree
  • netstat

查看進程創建的線程數,以及網絡連接數,如果資源耗盡,也可能出現OOM。

這里介紹另一種方法,通過

  • /proc/${PID}/fd 
  • /proc/${PID}/task 

 

可以分別查看句柄詳情和線程數。

例如,某一臺線上服務器的sshd進程PID是9339,查看

  • ll /proc/9339/fd 
  • ll /proc/9339/task 

sshd共占用了四個句柄

如上圖,sshd共占用了四個句柄

  • 0 -> 標準輸入
  • 1 -> 標準輸出
  • 2 -> 標準錯誤輸出
  • 3 -> socket(容易想到是監聽端口)

sshd只有一個主線程PID為9339,并沒有多線程。

所以,只要

  • ll /proc/${PID}/fd | wc -l 
  • ll /proc/${PID}/task | wc -l (效果等同pstree -p | wc -l) 

就能知道進程打開的句柄數和線程數。

作業

對線上服務器的一臺tomcat,查看proc下的fd目錄和task目錄,特別是對于句柄fd目錄的查詢,有意想不到的驚喜喲,一定要動手試試哈。

【本文為51CTO專欄作者“58沈劍”原創稿件,轉載請聯系原作者】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2013-07-03 11:13:58

DevOps

2014-07-29 11:25:18

LinuxMySQL

2017-03-23 10:54:58

LINUXMYSQL優化

2011-03-09 15:23:25

Windows Ser

2020-09-03 15:32:08

Wireshark數據包分析

2022-05-07 11:47:36

服務器架構

2012-11-08 16:05:23

2020-11-18 08:17:14

Java源碼Class

2009-02-19 10:20:00

2022-07-22 09:55:29

軟件工程師

2019-05-30 14:30:42

技術管理架構

2020-03-09 13:37:49

Serverless無服務器騰訊云

2021-02-15 22:07:18

項目策略模式

2019-11-14 08:34:08

LinuxMySQLCPU

2021-03-29 17:51:00

瑞數信息攻防演練

2021-06-25 15:19:13

攻防演練

2010-05-28 09:17:45

ARM服務器

2018-06-19 08:50:15

崗位總監管理

2010-12-29 10:29:31

Linux磁盤管理dfdu

2019-08-13 16:23:19

JavaScript數組方法
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美专区在线 | 欧美精品第一区 | 久久久精品亚洲 | 午夜电影福利 | 亚洲精品国产成人 | 精品九九 | 欧美日韩成人影院 | 亚洲精品日韩精品 | 国产日韩视频在线 | 日韩在线视频一区二区三区 | 你懂的av| 精品成人佐山爱一区二区 | 国产在线一区二区三区 | 久久aⅴ乱码一区二区三区 亚洲欧美综合精品另类天天更新 | 欧区一欧区二欧区三免费 | 国产精品美女 | 日韩免费一区二区 | 日本在线精品视频 | 欧美一区二区成人 | 国产成人免费视频网站高清观看视频 | 91极品欧美视频 | 国产一区久久 | 欧美日韩视频在线 | 国家aaa的一级看片 h片在线看 | 欧美视频精品 | 国产毛片久久久久久久久春天 | 国产精品极品美女在线观看免费 | 91精品一区二区三区久久久久久 | 黄色一级在线播放 | 久久久精品久久 | 一区二区三区在线 | 日韩1区2区 | 亚洲午夜精品 | 91嫩草精品 | 北条麻妃99精品青青久久主播 | 国产欧美精品一区二区 | 色网在线观看 | 国产精品久久久久久久久久了 | 国产羞羞视频在线观看 | 91在线精品视频 | 视频一区在线 |