有谁知道tomcat中https-openssl-n长时间运行进程的原因是什么。以下是使用命令
top -n 1 -H -p 422
的 tomcat 子进程的示例输出。有谁知道使用 linux kill
命令来终止这些卡住的进程是否安全?
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
491 tomcat 20 0 5026072 2.6g 20044 R 73.3 34.4 1363:26 https-openssl-n
490 tomcat 20 0 5026072 2.6g 20044 R 53.3 34.4 1372:33 https-openssl-n
3379 tomcat 20 0 5026072 2.6g 20044 R 46.7 34.4 1386:57 https-openssl-n
3516 tomcat 20 0 5026072 2.6g 20044 R 20.0 34.4 1396:43 https-openssl-n
422 tomcat 20 0 5026072 2.6g 20044 S 0.0 34.4 0:00.00 java
426 tomcat 20 0 5026072 2.6g 20044 S 0.0 34.4 0:22.08 java
我们的应用程序中存在递归循环错误。我们使用 jcmd 命令行工具导出 Tomcat 进程的堆转储。
jcmd <pid> GC.heap_dump <file-path>
然后,我们使用内存分析器 (MAT) 从 https://eclipse.dev/mat/ 打开堆转储以查找长时间运行的进程。我们能够找到递归线程并更改代码来修复错误。