关于【Caused by: java.net.BindException: Address already in use: JVM_Bind】 jvmsocketjmx
程序员文章站
2024-03-17 12:51:28
...
关于【Caused by: java.net.BindException: Address already in use: JVM_Bind】,你了解多少?
(1)、首先检查预期的监听端口号是否被占用?
(2)、还需要检查任意端口是否被占用?
因为,通过createServerSocket创建一个tcp监听时,除了指定目标端口号外,还需要listen一个任意端口号,
但这个任意端口,你是无法知道的,不像你的目标端口号。此时就需要修改目标端口号,尽管不是因为
目标端口号被占用,这个动作可以导致任意端口号的监听被改变,从而避免此问题的出现。
比较如下:
【解释如下】
JMX代理是导致随机端口号发生的根本原因,
当JVM中设置参数为【-Dcom.sun.management.jmxremote】时,会在一个随机端口上开启监听,供本地访问jmx使用,==>本地管理和监控
当JVM中设置参数为【-Dcom.sun.management.jmxremote.port=portNum】时,会开启两个监听端口号,一个为随机的,另一个为指定的<porNum>,指定的端口是为了进行远程jmx访问的。==>远程管理和监控
配置样例如下:
【-Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.hostname=10.40.120.165】
如果不想看到这些随机端口号,你可以将jmx代理关掉,即不在JVM参数中添加【-Dcom.sun.management.jmxremote】相关属性。
但是即使不加该属性为true,通过jconsole还是可以本地访问jmx的,即任意端口号不完全针对本机jmx监控而开启监听的,仅和远程代理相比较而言。不能理解成,没有任意端口监听开启,本地jmx监控就访问不到。
【相关参考】
http://docs.oracle.com/javase/6/docs/technotes/guides/management/agent.html
(1)、首先检查预期的监听端口号是否被占用?
(2)、还需要检查任意端口是否被占用?
因为,通过createServerSocket创建一个tcp监听时,除了指定目标端口号外,还需要listen一个任意端口号,
但这个任意端口,你是无法知道的,不像你的目标端口号。此时就需要修改目标端口号,尽管不是因为
目标端口号被占用,这个动作可以导致任意端口号的监听被改变,从而避免此问题的出现。
比较如下:
【解释如下】
JMX代理是导致随机端口号发生的根本原因,
当JVM中设置参数为【-Dcom.sun.management.jmxremote】时,会在一个随机端口上开启监听,供本地访问jmx使用,==>本地管理和监控
当JVM中设置参数为【-Dcom.sun.management.jmxremote.port=portNum】时,会开启两个监听端口号,一个为随机的,另一个为指定的<porNum>,指定的端口是为了进行远程jmx访问的。==>远程管理和监控
配置样例如下:
【-Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.hostname=10.40.120.165】
如果不想看到这些随机端口号,你可以将jmx代理关掉,即不在JVM参数中添加【-Dcom.sun.management.jmxremote】相关属性。
但是即使不加该属性为true,通过jconsole还是可以本地访问jmx的,即任意端口号不完全针对本机jmx监控而开启监听的,仅和远程代理相比较而言。不能理解成,没有任意端口监听开启,本地jmx监控就访问不到。
【相关参考】
http://docs.oracle.com/javase/6/docs/technotes/guides/management/agent.html
上一篇: 跑的好好的 Java 进程,怎么突然就瘫痪了 redis
下一篇: tomcat7用redis集群解决方案 博客分类: tomcat/jdk部署相关Nosql tomcat、session、redis
推荐阅读
-
关于【Caused by: java.net.BindException: Address already in use: JVM_Bind】 jvmsocketjmx
-
启动Tomcat闪退 java.net.BindException: Address already in use: JVM_Bind
-
关于tomcat启动时报错Address already in use: JVM_Bind
-
关于tomcat启动时报错Address already in use: JVM_Bind
-
启动Tomcat闪退 java.net.BindException: Address already in use: JVM_Bind