- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我无法使用 Java Mission Control 连接到远程 VM。我可以使用 VisualVM 相对轻松地进行连接。我想使用 Mission Control 的原因是由于 VisualVM 的一个长期存在的错误,每当远程 VM 重新启动时都必须重新启动。因此,远程 JMX 连接中涉及的大部分腿部工作已经到位。
我已经按照此处的说明增强了 Mission Control 的配置:https://technology.first8.nl/using-mission-controle-for-remote-profiling/
Java 版本:1.7.0_79-b15
JVM 参数:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=redacted
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/foo/bar/service
-XX:+UnlockCommercialFeatures
-XX:+FlightRecorder
-Dcom.sun.management.jmxremote.port=8401
-Dcom.sun.management.jmxremote.rmi.port=8402
-Dcom.sun.management.jmxremote.access.file=/foo/bar/service/jmxremote.access
-Djava.security.auth.login.config=ldap.config
-Djava.rmi.server.hostname=< redacted public IP address >
-Dcom.sun.management.jmxremote.login.config=< redacted JMX config name >
-Dcom.sun.management.jmxremote.local=false
-Djavax.net.ssl.keyStore=keystore.jks
-Djavax.net.ssl.keyStorePassword=< redacted password >
-Dcom.sun.management.jmxremote.registry.ssl=false
-Djava.net.preferIPv4Stack=true
-Djava.util.logging.config.file=/foo/bar/service/logging.properties
我正在使用身份验证和 SSL,因为这是在生产环境中使用的。 JMX 服务器和 RMI 端口不同,因为出于某种原因我无法让它们在同一个端口上工作。
自定义 JMX 远程访问jmxremote.access:
monitorRole readonly
controlRole readwrite \
create javax.management.monitor.*,javax.management.timer.*,com.sun.management.*,com.oracle.jrockit.* \
unregister
每当我尝试连接到 Flight Control 或 Console 时,我都会收到以下消息:
Could not connect to Foo Bar Service : access denied ("javax.management.MBeanPermission" "javax.management.MBeanServerDelegate#-[JMImplementation:type=MBeanServerDelegate]" "addNotificationListener")
Unable to resolve the connection credentials for Foo Bar Service. Problem was: access denied ("javax.management.MBeanPermission" "javax.management.MBeanServerDelegate#-[JMImplementation:type=MBeanServerDelegate]" "addNotificationListener")
这对我来说毫无意义,因为身份验证和授权在 VisualVM 中正常工作,事实上,在与 Mission Control 连接时,我在服务器日志中看到了这一点:
[16:46:47] [RMI TCP Connection(2044)-some.redacted.ip.address/INFO] [STDOUT]: [com.sun.security.auth.module.LdapLoginModule:initialize:481]: [LdapLoginModule] search-first mode; SSL disabled
[16:46:47] [RMI TCP Connection(2044)-some.redacted.ip.address/INFO] [STDOUT]: [com.sun.security.auth.module.LdapLoginModule:login:508]: [LdapLoginModule] user provider: ldap://localhost/ou=redacted-ou,dc=redacted-dc-1,dc=redacted-dc-2
[16:46:47] [RMI TCP Connection(2044)-some.redacted.ip.address/INFO] [STDOUT]: [com.sun.security.auth.module.LdapLoginModule:findUserDN:868]: [LdapLoginModule] searching for entry belonging to user: redacted-user
[16:46:47] [RMI TCP Connection(2044)-some.redacted.ip.address/INFO] [STDOUT]: [com.sun.security.auth.module.LdapLoginModule:findUserDN:895]: [LdapLoginModule] found entry: uid=redacted-user,ou=redacted-ou,dc=redacted-dc-1,dc=redacted-dc-2
[16:46:47] [RMI TCP Connection(2044)-some.redacted.ip.address/INFO] [STDOUT]: [com.sun.security.auth.module.LdapLoginModule:attemptAuthentication:807]: [LdapLoginModule] attempting to authenticate user: redacted-user
[16:46:47] [RMI TCP Connection(2044)-some.redacted.ip.address/INFO] [STDOUT]: [com.sun.security.auth.module.LdapLoginModule:login:570]: [LdapLoginModule] authentication succeeded
[16:46:47] [RMI TCP Connection(2044)-some.redacted.ip.address/INFO] [STDOUT]: [com.sun.security.auth.module.LdapLoginModule:commit:621]: [LdapLoginModule] added LdapPrincipal "uid=redacted-user,ou=redacted-ou,dc=redacted-dc-1,dc=redacted-dc-2" to Subject
[16:46:47] [RMI TCP Connection(2044)-some.redacted.ip.address/INFO] [STDOUT]: [com.sun.security.auth.module.LdapLoginModule:commit:631]: [LdapLoginModule] added UserPrincipal "redacted-user" to Subject
[16:46:47] [RMI TCP Connection(2044)-some.redacted.ip.address/INFO] [STDOUT]: [com.sun.security.auth.module.LdapLoginModule:commit:642]: [LdapLoginModule] added UserPrincipal "controlRole" to Subject
我认为禁用 LDAP 服务器 SSL 是安全的,因为它不会暴露在 VPS 之外(欢迎反馈)。如您所见,我将消息“身份验证成功”和“已将 UserPrincipal“controlRole”添加到主题”作为确认,它正在工作,但 Mission Control 不同意。似乎没有任何 javax.management.*
特定的日志消息表明出了什么问题。
最佳答案
我根据 Hirt 的回答解决了这个问题,但这很重要。我用以下内容修改了默认的 Java 安全策略:
//
// permissions for the user/principal "controlRole", for all codebases:
//
grant principal com.sun.security.auth.UserPrincipal "controlRole" {
//
// jconsole:
// - most of these permissions are needed to let JConsole query the
// MBean server and display information about Derby's mbeans as well
// as some default platform MBeans/MXBeans.
// - if you don't use JConsole, but query the MBean server from your
// JMX client app, some of these permissions may be needed.
permission javax.management.MBeanPermission
"sun.management.*#-[java.*:*]",
"getMBeanInfo,isInstanceOf,queryNames";
permission javax.management.MBeanPermission
"sun.management.*#*[java.*:*]", "getAttribute,invoke";
permission javax.management.MBeanPermission
"sun.management.*#-[com.sun.management*:*]",
"getMBeanInfo,isInstanceOf,queryNames";
permission javax.management.MBeanPermission
"com.sun.management.*#-[java.*:*]",
"getMBeanInfo,isInstanceOf,queryNames";
permission javax.management.MBeanPermission
"com.sun.management.*#*[java.*:*]", "getAttribute,invoke";
permission javax.management.MBeanPermission "java.*#-[java.*:*]",
"getMBeanInfo,isInstanceOf,queryNames";
permission javax.management.MBeanPermission "javax.management.MBeanServerDelegate#[JMImplementation:type=MBeanServerDelegate]",
"getMBeanInfo,isInstanceOf,queryNames,addNotificationListener";
permission java.net.SocketPermission "*", "resolve";
permission java.util.PropertyPermission "java.class.path", "read";
permission java.util.PropertyPermission "java.library.path", "read";
permission java.lang.management.ManagementPermission "monitor";
// end jconsole
};
由于我使用 LDAP 进行身份验证的方式,因此在此处使用 com.sun.security.auth.UserPrincipal
类是关键。
关于Java Mission Control - 访问被拒绝连接到远程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48069887/
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
换句话说:你写了什么代码 不能 失败。我很想听听那些从事过心脏监测器、水测试、经济基本面、导弹轨迹或航天飞机上的 O2 浓度的项目的人的意见。 你是如何准备编写这种代码的:方法论、智力和情感? 编辑
开放式JDK中是否包含JMC二进制文件?我们的Linux平台中有openjdk-1.8.0.252,但是我们没有JMC吗? 我们可以将JMC安装为可在已安装的JVM上运行的单独应用程序吗?我们可以在生
数学类型如何以可搜索的格式表示,如文本? 我的意思是有一个工具栏,您可以输入数学符号并将它们作为文本进行搜索,因此该格式可以将数学符号表示为文本。 因为数学类型只能用图标表示,所以这样的任务是不可能实
我已经使用 Zulu Mission Control 安装了 Java Mission Control。但是,当我单击“安装新软件...”时,没有可用的软件。该列表为空。我不确定该怎么做。 最佳答案
当正在分析的应用程序将 XX:MaxJavaStackTraceDepth 系统属性设置为 -1 时,我在使用 Java Mission Control 时遇到问题。 重现: 启动 java 应用程序
我想分析我的类(class),它就像一个缓冲区,我可以在其中保存用户数据并在之后获取它。我已经创建了 main 方法并在那里无限循环地运行测试方法。 public void test(){
我无法使用 Java Mission Control 连接到远程 VM。我可以使用 VisualVM 相对轻松地进行连接。我想使用 Mission Control 的原因是由于 VisualVM 的一
我正在尝试使用 JMC 分析 Clojure 应用程序,但是当我尝试启动飞行记录器时出现以下异常: java.lang.UnsupportedOperationException: This pars
我在 MacOS Sierra 10.12 上运行。必须替换一些 jar 文件才能使 UI 正常工作,现在我没有看到面板中列出任何 JVM。试图关注https://community.oracle.c
Jave 任务控制有一些很棒的特性。例如,可以看到应用程序的“热门方法”,或者当可以找到最常用的函数调用层次结构时,可以看到“调用树”部分。但我想知道,当您有兴趣寻找性能瓶颈(在时间方面)时,是否真的
在启用所有异常跟踪的情况下执行“飞行记录”时,我发现 JMC 存在令人不快的行为。 录制到面板后: 代码 -> 异常 事件 -> 直方图 -> “事件类型”为“Java 应用程序/Java 异常”,“
我可以看到各种方法所花费的 CPU 时间,并且可以看到套接字 I/O 所花费的时间。我发现应用程序在套接字读取方面遇到瓶颈。 但是我在哪里可以看到哪些方法正在执行所有 I/O? 最佳答案 对于 JMC
是否可以使用飞行记录器记录 mbean 值?当我在 mbean 模式下监视我的服务器时,我绘制了 java.lang.management.OperatingSystemMXBean.getSyste
问题: Bob 计划工作 n 天,每天 i 都有一个任务;每个任务只持续一天,必须在指定任务的第 i 天完成,并支付给 bob x_i 美元。 Bob 一次不能完成 5 个以上的连续任务。也就是说,他
这篇文章主要介绍Java Flight Recorder(JFR)和 Java Mission Control (JMC)组件。在本文结束时,你将能够监控、收集诊断数据并对任何正在运行的Java应用程
一、写在前面 上一篇文章 我们介绍了性能监控的一些命令,包括 jmap (生成堆存储快照)和 jstack(生成线程快照),事实上,在没有一些监控工具之前,我们用的最多的也是这两个命令来进行虚拟机性
有人问了类似的问题 here . 我正在使用根据 instructions 构建的 JMC 7.1.0 分析 Open JDK 11.0.2 应用程序. 该应用程序使用了大约 3 个内核,没有过多的
我正在构建一个 Electron 应用程序,但我不希望我的应用程序出现在 macOS Mission Control 中。有没有办法在 Mission Control 启动时隐藏窗口? 最佳答案 我能
我正在研究 Oracle Java Mission Control 来进行内存消耗调查。首先,我使用了 JDK 8 示例中提供的飞行记录 wldf.jfr。我对 Total TLAB Size 与 T
我是一名优秀的程序员,十分优秀!