OOM问题定位方法

1. 背景

线上内存OOM问题是最难定位的问题,最常见的原因:

(1)本身资源不够

(2)申请的太多

(3)资源耗尽

某服务器上部署了Java服务,出现OutOfMemoryError,请问有可能是什么原因,问题应该如何定位?

解决思路:

Java服务OOM,最常见的原因为:

(1)有可能是内存分配确实过小,而正常业务需要使用更大的内存;

(2)某一个对象被频繁申请,却没有释放,内存不断泄露,导致内存耗尽;

(3)某一个资源被不断申请,系统资源耗尽,例如:不断创建线程,不断发起网络连接

2. 排查过程

2.1 确认是不是内存本身就分配过小

jmap -heap pid

如图,可以查看新生代,老年代堆内存的分配大小以及使用情况,看是否本身分配过小。

2.2 找到最耗内存的对象

jmap -histo:live pid | more

如图,结果以表格的形式显示存活对象的信息,并按照所占内存大小排序:

实例数,所占内存大小,类名

如果发现某类对象占用内存很大,很可能是类对象创建太多,且一直未释放。例如:

(1)申请完资源后,未调用close释放资源

(2)消费者消费速度慢,生产者不断往队列中投递任务,导致队列中任务累积过多

2.3 确认释放是资源耗尽

pstree:查看进程创建的线程数

netstat:网络连接数

还有另一种方法,通过

ll /proc/pid/fd 查看占用句柄

ll /proc/pid/task 查看线程数

例如,某一台显示服务器的sshd进程是1041,查看:

sshd共占用了5个句柄。

sshd只有一个主线程为1041,并没有多线程。

原文地址:https://www.cnblogs.com/lujiango/p/9650927.html

时间: 2024-10-18 04:40:56

OOM问题定位方法的相关文章

3 Python+Selenium的元素定位方法(id、class name、name、tag name)

[环境] Python3.6+selenium3.0.2+IE11+Win7 [定位方法] 1.通过ID定位 方法:find_element_by_id('xx') 2.通过name定位 方法:find_element_by_name('xx') 3.通过class name定位 方法:find_element_by_class_name('xx') 4.通过tag name定位 方法:find_element_by_tag_name('xx') 说明:tag name在html中是标签的名字,

xpath定位方法详解

1.xpath较复杂的定位方法: 现在要引用id为“J_password”的input元素,可以像下面这样写: WebElement password = driver.findElement(By.xpath("//*[@id='J_login_form']/dl/dt/input[@id='J_password']")); 其中//*[@id=’ J_login_form’]这一段是指在根元素下查找任意id为J_login_form的元素,此时相当于引用到了form元素.后面的路径

sellenium页面元素的定位方法

1.findElements函数可用于多个元素定位 (1)使用ID定位:driver.findElement(By.id("ID值")); 例:HTML代码: 定位语句代码:WebElement username=driver.findElement(By.id("username")); WebElement password=driver.findElement(By.id("password"));  WebElement subimit=

CSS常用背景图片定位方法

CSS背景图片定位其实对于每一位学习前端的同学来说,都已经非常熟悉了.网上铺天盖地的最常见的一种方案就是在父元素中relative,然后子元素absolute.这种方案当然好,不过带来的一个缺点就是会改变元素的层级关系,如果在多个地方使用,这样的层叠嵌套的关系会十分混乱. 先暂时抛弃那种方案,给大家分享几种CSS背景图片定位的方案. 整篇文章会按照如下思路: 1.无依赖的absolute定位 2.background-position扩展语法 3.background-origin定位 4.ca

xpath定位方法小结(转载)

1.实例化一个浏览器WebDriver driver = new FirefoxDriver(); 2.driver.get() get传参数到浏览器中 3.常用定位方法webelement XX=driver.findElement(by.XX) 3.1 by.id("value");3.2 by.ame("value");3.3 by.xpath("/html/body/XX/div[1]/a") 表示第一个div值为a的值      by.

selenium webdriver 表格的定位方法练习

selenium webdriver 表格的定位方法 html 数据准备 <html> <body> <div id="div1"> <input name="divl1input"></input> <a href="http://www.sogou.com/">搜狗搜索</a> <img alt="div1-img1 "src=&qu

(转)HTML&amp;CSS——background: url() no-repeat 0 -64px;CSS中背景图片定位方法

http://blog.csdn.net/oscar92420aaa/article/details/51304067 CSS中背景图片的定位,困扰我很久了.今天总算搞懂了,一定要记下来. 在CSS中,背景图片的定位方法有3种: 1)关键字:background-position: top left; 2)像素:background-position: 0px 0px; 3)百分比:background-position: 0% 0%; 上面这三句语句,都将图片定位在背景的左上角,表面上看效果是

css 背景图片定位方法

CSS背景图片定位其实对于每一位学习前端的同学来说,都已经非常熟悉了.网上铺天盖地的最常见的一种方案就是在父元素中relative,然后子元素absolute.这种方案当然好,不过带来的一个缺点就是会改变元素的层级关系,如果在多个地方使用,这样的层叠嵌套的关系会十分混乱. 先暂时抛弃那种方案,给大家分享几种CSS背景图片定位的方案. 整篇文章会按照如下思路: 1.无依赖的absolute定位 2.background-position扩展语法 3.background-origin定位 4.ca

[python爬虫] Selenium常见元素定位方法和操作的学习介绍

这篇文章主要Selenium+Python自动测试或爬虫中的常见定位方法.鼠标操作.键盘操作介绍,希望该篇基础性文章对你有所帮助,如果有错误或不足之处,请海涵~ 前文目录: [Python爬虫] 在Windows下安装PhantomJS和CasperJS及入门介绍(上) [Python爬虫] 在Windows下安装PIP+Phantomjs+Selenium [Python爬虫] Selenium自动访问Firefox和Chrome并实现搜索截图 [Python爬虫] Selenium实现自动登