簡體   English   中英

JProfiler 能夠為一個用戶找到 JVM 進程,但可以為同一台機器上的另一個用戶找到它

[英]JProfiler is able to find JVM process for one user but can find it for another user on the same machine

我有一個 ec2-instance 有兩個不同的用戶,ec2-user 和 other-user,我有一些 jvm 進程在每個用戶上運行。 我正在嘗試通過 JProfiler 進行遠程連接,但我似乎無法在JProfiler(版本 12.0.3 Build 12084 )中找到 JVM 進程

所以我開始挖掘盒子來檢查發生了什么,這是我發現的

cd /tmp
pwd
drwxr-xr-x 2 other-user   users    4.0K Jul  7 23:35 hsperfdata_other-user
drwxr-xr-x 2 ec2-user   users    4.0K Jul  7 23:35 hsperfdata_ec2-user
ls /tmp/hsperfdata_ec2-user (Nothing)
ls /tmp/hsperfdata_other-user
9014

這里的 9014 是 java 進程的 pid,該文件包含一些二進制數據。 但是,還有另一個以 ec2-user 身份運行的 java 進程,但它沒有出現在 /tmp/hsperfdata_ec2-user 中。

這兩個 JVM 僅在它們啟動的版本上有所不同

用於以 ec2-user 身份運行的 java 進程

openjdk version "11.0.11" 2021-04-20 LTS
OpenJDK Runtime Environment (build 11.0.11+9-LTS)
OpenJDK 64-Bit Server VM (build 11.0.11+9-LTS, mixed mode)

另一個給其他用戶

openjdk version "1.8.0_282"
OpenJDK Runtime Environment (build 1.8.0_282-b08)
OpenJDK 64-Bit Server VM (build 25.282-b08, mixed mode)

我運行 ps aux |grep java 並發現兩個 pid 都在運行。

我嘗試刪除該目錄,重新啟動 ec2-user 的 jvm 進程,然后嘗試再次附加它,但沒有奏效。

我還嘗試在 ec2-instance 上像這樣在本地使用不同版本的 JProfiler

wget --no-check-certificate https://download-gcdn.ej-technologies.com/jprofiler/jprofiler_linux_11_0.tar.gz -P /tmp/;tar -zxvf /tmp/jprofiler_linux_11_0.tar.gz -C /tmp

sudo -u ec2-user /tmp/jprofiler11.0/bin/jpenable
No unprofiled JVMs found.

If the target JVM is running as a different user, restart as
    sudo -u [user] jpenable

我對如何進步感到茫然。 我正在四處尋找 JProfiler 遠程代理的日志,但到目前為止還沒有找到任何東西。 我認為這是目錄的權限問題,但它們似乎沒問題。 我正在檢查發布日志,但沒有任何突出之處。

有人可以幫我解決這個問題嗎?

弄清楚了。 我在另一個進程中啟用了這個 jvm arg

<jvmarg value="-XX:+PerfDisableSharedMem"/>

一旦我移除了這面旗幟,一切就順風順水了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM