在设置的连接超时之前,我得到了一个超时异常。有人对发生的事情有任何想法吗?
任何输入都会很棒!
15 Jan 2013 10:44:40,944 [ Thread-4622] WorkerThread INFO [1538387622377815-4640]- - About to call server with connectionTimeoutMS=30000
15 Jan 2013 10:45:02,003 [ Thread-4622] WorkerThread ERROR [1538387622377815-4640]-run():Connection timed out:java.net.ConnectException
我在测试运行时记录了 netstat、gc 和打开文件的数量,但没有注意到任何戏剧性的事情。
环境
- Java 1.6
- Jetty 运行 Spring/Camel 路线(camel 2.10)
- 客户端是多线程的(向码头组件发送并发批处理请求)
文件描述符:
- ulimit -Hn 100000
- ulimit -Sn 100000
打开文件
以 1 秒为间隔运行 cat /proc/sys/fs/file-nr 的 Bash 脚本:
测试开始前:5664 0 200000
最坏情况:6720 0 200000
客户端和服务器都在本地主机上运行。
- 客户端连接超时设置为 30 秒。
客户如何工作
客户端创建一批并发线程(rnd 在 1-1000 之间)并调用 jetty 组件,然后在再次调用之前等待(rnd 在 1-30 秒之间)。最多重复 5 分钟。
服务器:尝试使用默认超时并将 connectTimeout 设置为较大的数字,例如 60000 毫秒,结果相同。
在运行的服务器上
- 码头-7.6.1.v20120215
- 骆驼 2.10.1
- 春天 3.0.7
春天/骆驼路线:
<route id="startQueue_route" trace="false">
<from uri="jetty:http://0.0.0.0:9311" />
<to uri="bean:LDAPBean" />
</route>
<bean id="jetty" class="org.apache.camel.component.jetty.JettyHttpComponent"/>