首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JMX连接超时

JMX连接超时
EN

Stack Overflow用户
提问于 2013-08-28 20:59:49
回答 2查看 4.6K关注 0票数 3

我的线程池变得满了,因为大多数线程都在等待套接字连接。如何为jmx连接添加超时

代码语言:javascript
复制
java.lang.Thread.State: RUNNABLE
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    - locked <0x05671ad0> (a java.net.SocksSocketImpl)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:519)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:548)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(SSLSocketImpl.java:351)
    at com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:71)
    at javax.rmi.ssl.SslRMIClientSocketFactory.createSocket(SslRMIClientSocketFactory.java:105)
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:595)
    at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198)
    at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184)
    at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:322)
    at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
    at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:97)
    at com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:185)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1871)
    at javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1841)
    at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:257)
EN

回答 2

Stack Overflow用户

发布于 2017-12-12 00:06:00

这是一次艰难的考验。这取决于由于您所处的环境而超时的部分。

很可能您正遇到TCP级别的连接超时,原因要么是防火墙问题,要么是其套接字仍在运行的死应用程序。

JVM的总体连接超时设置为-1,默认情况下是无限的。喂,螺纹漏了。

代码语言:javascript
复制
sun.net.client.defaultConnectTimeout (default: -1)

您可以在这里找到Java网络参数的文档:https://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html

遗憾的是,jmx/rmi特定文档在该级别上没有连接超时设置。但是他们在读超时方面还有很多其他的控件:https://docs.oracle.com/javase/8/docs/technotes/guides/rmi/sunrmiproperties.html

您可以在使用netcat并将应用程序指向本地主机端口等简单的开发过程中测试此功能:

代码语言:javascript
复制
# creat socket on port 3333
netcat -l 3333
# now point your app on the socket
# and you should be able to reproduce

这将刺激在端口上的死应用程序或防火墙块。

票数 0
EN

Stack Overflow用户

发布于 2016-08-24 12:43:14

只需添加以下系统属性- "-Dsun.rmi.transport.tcp.responseTimeout=60000“

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18498088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档