elasticsearch 如何从运行的JVM捕获堆转储
我有一个运行在ec2亚马逊服务器上的Elasticsearch集群。如本文所述,从运行的JVM捕获堆转储的方法是使用jmap: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} 错误: 正在将堆转
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谢谢你的呼呼声!)