gpt4 book ai didi

jetty - 如何获取 Jetty 线程转储?

转载 作者:行者123 更新时间:2023-12-05 00:38:09 27 4
gpt4 key购买 nike

我有一个 Ubuntu 服务器 10.10 64 位 上运行 Web 应用程序 jetty 6.1.24-6 Sun 的 JVM ,两者都是从标准 Ubuntu 存储库安装的。

我正在尝试查找此服务器的问题(一段时间后 100% cpu,它可能与 NIO 的 Selector 上的已知错误有关,尽管看起来将连接器更改为旧的 io SocketConnector 并没有解决问题! ),并且需要进行线程转储。

不幸的是,我无法获得线程转储。我试过发送 信号退出 到进程,并尝试附加 JStack 到它,但两种方法都不起作用。

我根本看不到 SIGQUIT(在 Jetty 生成的任何日志文件中)和 JStack 的任何输出,即使以 root(或 jetty)身份运行并使用“-F”,也说它已附加到进程,但是然后阻塞并不再产生输出!

如何获取线程转储?

最佳答案

您必须以运行 jetty 进程的同一用户身份执行此操作。在 Ubuntu 上,这个用户通常被称为 jetty。

所以试试

sudo -u jetty jstack <pid>

这会将线程转储发送到标准输出(您的 shell )。

你也可以
sudo -u jetty kill -QUIT <pid>

这会将线程转储发送到 jetty 的标准输出(通常 /var/log/jetty/out.log )

要获取 pid,请使用 jps命令或 ps ax|grep java

关于jetty - 如何获取 Jetty 线程转储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6061302/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com