记一次内存溢出java.lang.OutOfMemoryError: unable to creat

简介:

1、事发
刚好在外干活,开发着急上线,就远程进行上线,过程中发现tomcat出现大量异常日志。
2、报错日志
java.lang.OutOfMemoryError: unable to create new native thread
3、原因:得知市场部门正在推广app
4、直接去看接口并发以及数据库监控,发现接口并发连接数峰值在2500左右,全站应用日志都在报错,就猜到了又是数据库出现了瓶颈,结果发现是一台从库cpu100%导致所有查询都吭住了。明明两台从库可是请求大多数都在了第二台从库上,告知市场部情况并要求暂时停止推广,开发修改代码将部分应用手工指定连接到第一台从库上,问题得到解决。
最开始以为是并发过大导致的应用内存溢出,就做了一些关于进程的线程数量查询,以下是记录:
pstree -p ps -ef | grep story-wap|grep -v grep | awk '{print $2}' | wc -l
查看story-wap进程的线程数量(如果story-wap过滤不出来会统计系统所有的线程数量)
pstree -p ps -ef | grep story-app|grep -v grep | awk '{print $2}' | wc -l
pstree -p ps -ef | grep story-back|grep -v grep | awk '{print $2}' | wc -l
Linux下查看某个进程的线程数量
有些时候需要确实进程内部当前运行着多少线程,那么以下几个方法值得一用。

1.根据进程号进行查询:

pstree -p 进程号

top -Hp 进程号

2.根据进程名字进行查询:

pstree -p ps -e | grep server | awk '{print $1}'

pstree -p ps -e | grep server | awk '{print $1}' | wc -l

这里利用了管道和命令替换,
关于命令替换,我也是今天才了解,就是说用括起来的命令会优先执行,然后以其输出作为其他命令的参数,<br/>上述就是用 ps -e | grep server | awk '{print $1}' 的输出(进程号),作为 pstree -p 的参数<br/>管道和命令替换的区别是:<br/>管道:管道符号"|"左边命令的输出作为右边命令的输入<br/>命令替换:将命令替换符""中命令的输出作为其他命令相应位置的参数

参考
http://www.cnblogs.com/myshare/p/5177135.html

kill -9 ps -ef |grep story-app|grep -v grep|awk '{print $2}'
kill -9 ps -ef |grep story-back|grep -v grep|awk '{print $2}'
kill -9 ps -ef |grep story-wap|grep -v grep|awk '{print $2}'










本文转自 天乐 51CTO博客,原文链接:http://blog.51cto.com/tianlegg/2054112,如需转载请自行联系原作者
目录
相关文章
|
Java Shell Spring
java.lang.reflect.InaccessibleObjectException: Unable to make
java.lang.reflect.InaccessibleObjectException: Unable to make ... This exception occurs in a wide variety of scenarios when running an application on Java 9.
7205 0
|
6月前
|
Java Spring
【Java】Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean
【Java】Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean
87 0
|
2月前
|
Java Linux iOS开发
8 种 Java- 内存溢出之五 -Unable to create new native thread
8 种 Java- 内存溢出之五 -Unable to create new native thread
|
jenkins Java 持续交付
maven 打包项目报Fatal Error: Unable to find package java.lang in classpath or bootclasspat
maven 打包项目报Fatal Error: Unable to find package java.lang in classpath or bootclasspat
maven 打包项目报Fatal Error: Unable to find package java.lang in classpath or bootclasspat
|
7月前
|
SQL 关系型数据库 MySQL
Hive报错:HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.me
Hive报错:HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.me
147 0
|
4月前
|
存储 Java
Java【报错 01】Unable to open nested jar file 问题说明及解决方法(仅针对压缩工具 WinRAR)
Java【报错 01】Unable to open nested jar file 问题说明及解决方法(仅针对压缩工具 WinRAR)
130 0
|
6月前
|
Java
【Java异常】ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2 JDWP exit erro
【Java异常】ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2 JDWP exit erro
75 0
|
8月前
|
缓存 NoSQL Redis
java.io.IOException: java.lang.RuntimeException: unable to find class for code 253
原因: 跟踪了一下所调用的底层接口,发现是redis缓存的问题,登录redis,刷新redis
44 0
|
8月前
|
Java 测试技术
java.lang.IllegalStateException Unable to find a @SpringBootConfiguration代码报错
java.lang.IllegalStateException Unable to find a @SpringBootConfiguration代码报错
|
10月前
|
Java 测试技术
java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration
java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration
73 0

热门文章

最新文章