elasticsearch 如何从运行的JVM捕获堆转储,elasticsearch,amazon-ec2,jvm,elasticsearch,Amazon Ec2,Jvm" /> elasticsearch 如何从运行的JVM捕获堆转储,elasticsearch,amazon-ec2,jvm,elasticsearch,Amazon Ec2,Jvm" />

elasticsearch 如何从运行的JVM捕获堆转储

elasticsearch 如何从运行的JVM捕获堆转储,elasticsearch,amazon-ec2,jvm,elasticsearch,Amazon Ec2,Jvm,我有一个运行在ec2亚马逊服务器上的Elasticsearch集群。如本文所述,从运行的JVM捕获堆转储的方法是使用jmap: sudo jmap -dump:format=b,file=heap.hprof {processID} 错误: {processID}:已知文件不安全 Jmap需要运行该进程的用户,因此我必须执行如下命令: sudo -u elasticsearch jmap -dump:format=b,file=heap.hprof {processID} 错误: 正在将堆转

我有一个运行在ec2亚马逊服务器上的Elasticsearch集群。如本文所述,从运行的JVM捕获堆转储的方法是使用jmap:

sudo jmap -dump:format=b,file=heap.hprof {processID}
错误: {processID}:已知文件不安全

Jmap需要运行该进程的用户,因此我必须执行如下命令:

sudo -u elasticsearch jmap -dump:format=b,file=heap.hprof {processID}
错误:

正在将堆转储到/home/ubuntu/heap.hprof

拒绝许可

所以我想我必须像这样使用jmap:

sudo -u elasticsearch sh -c "sudo jmap -dump:format=b,file=heap.hprof {processID}"
elasticsearch的[sudo]密码:


elasticsearch用户密码是什么?是否有一些默认值?我没有找到任何解决办法

您需要将要写入的目录设置为可写目录,用户可以写入该目录,或者您可以使用每个用户都可以写入的目录,例如

sudo -u elasticsearch jmap -dump:format=b,file=/tmp/es-heap.hprof {processID}

解决方案是以root用户身份运行jmap,但要确保该文件可由Java应用程序写入。假设jmap将dump命令发送给java应用程序,但是dump在其中运行

sudojmap-dump:format=b,file=/path/to/writable/directory/by/elastic/user/heap.hprof{processID}


就这样

@Rada谢谢你的呼呼声!)