java - 在 Spring Boot 应用程序中启动 HikariCP 时 JMX 端口上的 SocketTimeoutException
问题描述
使用 HikariCP (v3.4.5) 在 Docker 容器中启动 Spring Boot 应用程序 (Spring Boot v2.35) 时,日志中会出现以下警告:
Picked up JAVA_TOOL_OPTIONS: ... -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=<dockerhostname> -Dcom.sun.management.jmxremote.port=3181 -Dcom.sun.management.jmxremote.rmi.port=3181 -Dcom.sun.management.jmxremote.authenticate=false ....
...
2021-06-08 07:22:07.781 INFO 1 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2021-06-08 07:22:08.077 WARN 1 --- [MI TCP Accept-0] sun.rmi.transport.tcp : RMI TCP Accept-0: accept loop for ServerSocket[addr=0.0.0.0/0.0.0.0,localport=41775] throws
java.net.SocketTimeoutException: Accept timed out
at java.base/java.net.PlainSocketImpl.socketAccept(Native Method)
at java.base/java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:458)
at java.base/java.net.ServerSocket.implAccept(ServerSocket.java:565)
at java.base/java.net.ServerSocket.accept(ServerSocket.java:533)
at jdk.management.agent/sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(LocalRMIServerSocketFactory.java:52)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:394)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:366)
at java.base/java.lang.Thread.run(Thread.java:834)
2021-06-08 07:22:08.079 WARN 1 --- [TCP Accept-3181] sun.rmi.transport.tcp : RMI TCP Accept-3181: accept loop for ServerSocket[addr=0.0.0.0/0.0.0.0,localport=3181] throws
java.net.SocketTimeoutException: Accept timed out
at java.base/java.net.PlainSocketImpl.socketAccept(Native Method)
at java.base/java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:458)
at java.base/java.net.ServerSocket.implAccept(ServerSocket.java:565)
at java.base/java.net.ServerSocket.accept(ServerSocket.java:533)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:394)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:366)
at java.base/java.lang.Thread.run(Thread.java:834)
2021-06-08 07:22:08.273 INFO 1 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
应用程序配置包含
spring:
datasource:
hikari:
register-mbeans: true
jmx:
enabled: true
后来通过 VisualVM 进行的 JMX 访问有效,因此警告似乎没有效果。
我猜这可能是一个初始化问题,所以我明确地设置了从 DataSource-Bean 到 Micrometer MeterRegistry-Bean 的依赖关系。但这无济于事。
警告的原因是什么?以及如何摆脱它们?
解决方案
推荐阅读
- sql - 如何替换sql中的约束?
- java - 使用 Jetty 9.4.19 v20190610 设置 Vaadin 10+
- r - 如何在 Rstudio 中读取多个 .txt 文件并制作数据框?
- ios - 全新安装后领域触发迁移异常
- python - Pandas - 如何通过逗号分隔的字符串进行分隔和分组
- android - 启用 64 位后 Unity 游戏在 Android 设备上滞后
- pandas - 如何优化代码,同时导出为 csv?
- json - 如何从powershell中的json值中获取值
- python - 重定位 R_X86_64_PC32 对未定义的隐藏符号 `__dso_handle' 在制作共享对象时不能使用
- ios - 在 Swift4.0 iOS 12 中使用 MediaPlayer 库获取歌词失败