tomcat应用服务器大量接口超时,内存及CPU飙升100%以上解决流程
2019-03-07 18:50
1031 查看
问题现象
最近我们相关站点的docker环境出现一个奇怪的现象,大量接口超时,普遍都是几千毫秒。
问题解决
经过排查,已经确定不是被调用服务端的问题,于是开始排查我们自己的环境,发现docker容器的内存,从启动开始内存不断上升,然后找到我们的应用服务器。
1.输入top命令,查找占用cpu较大的进程,发现是java进程已经飙升90%。
2.然后拿到这个进程的pid,接着输入命令 top -Hp {pid}
3.查看这个进程下的所有线程占用情况
4.找到对应CPU较高的线程的pid,我们这边定义为tid,一般找两到三个。
5.将此tid转为16进制的 输入命令 printf “%x\n” {tid}得到HTID
6.输入命令将相关上下文堆栈信息打出来 jstack {pid}|grep -i {HTID} -A 30
7.好了,可以领一个BUG了。
问题原因
结果是某种业务场景下导致的for循环,一直在new 对象,陷入循环不可自拔导致。
最后送给自己6个字:“程序员要严谨”
相关文章推荐
- 服务器大量php-cgi.exe进程,导致CPU占用100%的解决
- IIS中死循环的解决方法 dllhost占用大量内存,cpu占用100%
- oracle真实案例之oem大量占用cpu与内存问题的解决方法
- varnish服务器在内存大量富余时使用交换空间的原因及解决方法
- 解决一个 MySQL 服务器进程 CPU 占用 100%解决一个 MySQL 服务器进程 CPU 占用 100%的技术笔记》[转]
- SQL调优案例,MYSQL服务器CPU100%问题解决
- 优化配置和索引查询--MySQL服务器进程CPU占用100%的解决方法
- 解决tomcat日志文件占用大量内存
- 【已解决】mmdrv.exe进程占用CPU近100%,且占用内存持续增长
- 解决服务器w3wp.exe进程占用cpu和内存过多问题
- Java Web应用乱码解决(Tomcat服务器)
- varnish服务器在内存大量富余时使用交换空间的原因及解决方法
- 记一次mongodb CPU飙升100%的解决
- 利用用户自己的服务器、tomcat下的解决iOS7.1企业应用无法安装应用程序 因为证书无效的问题
- MySQL服务器进程CPU占用100%的解决方法
- 解决tomcat服务器内存溢出
- 解决一个 MySQL 服务器进程 CPU 占用 100%的技术笔记
- 通过ajax访问Tomcat服务器web service接口时出现No 'Access-Control-Allow-Origin' header问题的解决办法
- Weblogic内存回收机制设计不合理导致服务器CPU使用率100%
- 解决一个 MySQL 服务器进程 CPU 占用 100%的技术笔记