java.net.NoRouteToHostException: 无法指定被请求的地址
报错日志:
2021-08-09 14:13:42.083[WARN ][C3P0PooledConnectionPoolManager[identityToken->z8kfltajbiyq6d98bpde|6fa82685]-HelperThread-#0][c.m.v.r.BasicResourcePool:214] com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@132433b1 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: com.thunisoft.ArteryBase.util.PSQLException: The connection attempt failed. at com.thunisoft.ArteryBase.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:240) at com.thunisoft.ArteryBase.core.ConnectionFactory.openConnection(ConnectionFactory.java:64) at com.thunisoft.ArteryBase.jdbc2.AbstractJdbc2Connection.(AbstractJdbc2Connection.java:143) at com.thunisoft.ArteryBase.jdbc3.AbstractJdbc3Connection. (AbstractJdbc3Connection.java:29) at com.thunisoft.ArteryBase.jdbc3g.AbstractJdbc3gConnection. (AbstractJdbc3gConnection.java:21) at com.thunisoft.ArteryBase.jdbc4.AbstractJdbc4Connection. (AbstractJdbc4Connection.java:38) at com.thunisoft.ArteryBase.jdbc4.Jdbc4Connection. (Jdbc4Connection.java:24) at com.thunisoft.ArteryBase.Driver.makeConnection(Driver.java:412) at com.thunisoft.ArteryBase.Driver.connect(Driver.java:280) at net.sf.log4jdbc.sql.jdbcapi.DriverSpy.connect(DriverSpy.java:399) at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175) at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220) at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206) at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203) at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138) at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125) at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44) at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870) at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696) Caused by: java.net.NoRouteToHostException: 无法指定被请求的地址 at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at com.thunisoft.ArteryBase.core.PGStream. (PGStream.java:61) at com.thunisoft.ArteryBase.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:110) ... 18 common frames omitted
可能解决方法1--调低time_wait状态端口等待时间:
- 调低端口释放后的等待时间,默认为60s,修改为15~30s
sysctl -w net.ipv4.tcp_fin_timeout=30 - 修改tcp/ip协议配置, 通过配置/proc/sys/net/ipv4/tcp_tw_resue, 默认为0,修改为1,释放TIME_WAIT端口给新连接使用
sysctl -w net.ipv4.tcp_timestamps=1 - 修改tcp/ip协议配置,快速回收socket资源,默认为0,修改为1
sysctl -w net.ipv4.tcp_tw_recycle=1
可能解决办法2–增加可用端口:
CCH:~ # sysctl -a |grep port_range
net.ipv4.ip_local_port_range = 50000 65000 -----意味着50000~65000端口可用
修改参数:
$ vi /etc/sysctl.conf
net.ipv4.ip_local_port_range = 10000 65000 -----意味着10000~65000端口可用
改完后,执行命令“sysctl -p”使参数生效,不需要reboot。



