Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获得Jetty线程转储?_Jetty - Fatal编程技术网

如何获得Jetty线程转储?

如何获得Jetty线程转储?,jetty,Jetty,我有一个Ubuntu服务器10.10 64位在Sun的JVM上运行一个web应用程序Jetty 6.1.24-6,两者都是从标准的Ubuntu存储库安装的 我正试图找出这台服务器的一个问题(一段时间后100%的cpu,这可能与NIO选择器上的一个已知错误有关,尽管看起来将连接器更改为旧io SocketConnector并没有解决问题!),并且需要进行线程转储 不幸的是,我无法获得线程转储。我尝试向流程发送SIGQUIT,并尝试将JStack附加到流程中,但两种方法都不起作用 我看不到任何来自S

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

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

不幸的是,我无法获得线程转储。我尝试向流程发送SIGQUIT,并尝试将JStack附加到流程中,但两种方法都不起作用

我看不到任何来自SIGQUIT的输出(在Jetty生成的任何日志文件中),而JStack,即使以root(或Jetty)和“-F”运行,也表示它已连接到进程,但随后阻塞并不再生成输出


如何获取线程转储?

您是否尝试了远程连接的VisualVM(/usr/lib/java-6-sun/bin/jvisualvm)?它可以捕获线程转储

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

所以试试看

sudo -u jetty jstack <pid>
sudo-u码头jstack
这将向stdout(您的shell)发送一个线程转储

你也可以

sudo -u jetty kill -QUIT <pid>
sudo-u码头压井-退出
将线程转储发送到jetty的stdout(通常
/var/log/jetty/out.log


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

我不知道为什么,但它不起作用。我已经向JVM添加了一些-D参数,服务器上的端口1099是打开的。我在VisualVM上添加了一个连接,上面写着“连接…”,但从来没有进一步。更奇怪的是,连接确实已建立,如客户端(我的机器)和服务器上的“netstat”所示!你是如何建立联系的?通过JMX或jstatd守护程序?1099似乎是rmi注册表的一个端口。。。您在JMX连接中配置了什么url?对于visualvm,它只要求主机和端口。我不确定1099是不是正确的端口。看看这个问题的公认答案:看看我这里的问题,我做了一些线程转储,可能会对您有所帮助:
ps ax | grep java
通常输出几个进程,我应该使用哪个进程?