1

設定された接続タイムアウトのかなり前にタイムアウト例外が発生します。誰かが何が起こっているかについて何か考えを持っていますか?

どんな入力でも素晴らしいでしょう!

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
  • 春/ラクダルートを走る突堤(ラクダ2.10)
  • クライアントはマルチスレッドです(同時バッチ要求をjettyコンポーネントに送信します)

ファイル記述子:

  • ulimit -Hn 100000
  • ulimit -Sn 100000

ファイルを開く

  • cat / proc / sys / fs / file-nrを1秒間隔で実行する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"/>
4

1 に答える 1

1

私はこの問題を修正することができましたが、tcp 設定の一部を微調整しました。

私は今、一歩下がって、更新されたキャメル jar を 2.10.0 に戻し、修正が単に tcp 環境の問題であることを確認します (設定された制限よりかなり前にタイムアウトします)。

1) Java 1.6 のキャメルと桟橋を最新/最高のものに更新しましたが、同じランダム タイムアウトの問題がまだありました。

-rw-r--r-- 1 dana dana  670388 Jan 16 18:23 spring-context-3.0.7.RELEASE.jar
-rw-r--r-- 1 dana dana  556747 Jan 16 18:24 spring-beans-3.0.7.RELEASE.jar
-rw-r--r-- 1 dana dana  383621 Jan 16 18:25 spring-core-3.0.7.RELEASE.jar
-rw-r--r-- 1 dana dana   53082 Jan 16 18:26 spring-asm-3.0.7.RELEASE.jar
-rw-r--r-- 1 dana dana  169749 Jan 16 18:27 spring-expression-3.0.7.RELEASE.jar
-rw-r--r-- 1 dana dana   88733 Jan 17 11:30 jetty-servlets-8.1.8.v20121106.jar
-rw-r--r-- 1 dana dana   97228 Jan 17 11:30 jetty-servlet-8.1.8.v20121106.jar
-rw-r--r-- 1 dana dana  338985 Jan 17 11:30 jetty-server-8.1.8.v20121106.jar
-rw-r--r-- 1 dana dana   89854 Jan 17 11:30 jetty-security-8.1.8.v20121106.jar
-rw-r--r-- 1 dana dana   24596 Jan 17 11:30 jetty-jmx-8.1.8.v20121106.jar
-rw-r--r-- 1 dana dana   87621 Jan 17 11:30 jetty-client-8.1.8.v20121106.jar
-rw-r--r-- 1 dana dana  311747 Jan 17 11:30 commons-httpclient-3.1_1.jar
-rw-r--r-- 1 dana dana  228640 Jan 17 11:30 camel-spring-2.10.3.jar
-rw-r--r-- 1 dana dana   52852 Jan 17 11:30 camel-jetty-2.10.3.jar
-rw-r--r-- 1 dana dana   66945 Jan 17 11:30 camel-http-2.10.3.jar
-rw-r--r-- 1 dana dana 2218113 Jan 17 11:30 camel-core-2.10.3.jar
-rw-r--r-- 1 dana dana  280529 Jan 17 11:33 jetty-util-8.1.8.v20121106.jar
-rw-r--r-- 1 dana dana   94481 Jan 17 11:34 jetty-http-8.1.8.v20121106.jar
-rw-r--r-- 1 dana dana  231922 Jan 17 11:36 org.springframework.transaction-    3.0.5.RELEASE.jar
-rw-r--r-- 1 dana dana  321190 Jan 17 11:37 org.springframework.aop-3.0.5.RELEASE.jar
-rw-r--r-- 1 dana dana  103293 Jan 17 11:39 jetty-io-8.1.8.v20121106.jar
-rw-r--r-- 1 dana dana  200387 Jan 17 11:45 servlet-api-3.0.jar
-rw-r--r-- 1 dana dana   21138 Jan 17 11:52 jetty-continuation-8.1.8.v20121106.jar

2) TCP 設定を微調整: (これにより、タイムアウトの問題が修正されたようです)

ulimit -n 124000

sudo sysctl -w net.ipv4.tcp_syn_retries="1000000"
sudo sysctl -w net.ipv4.tcp_synack_retries="1000000"
sudo sysctl -w fs.file-max=200000
sudo sysctl -w net.ipv4.tcp_fin_timeout=5

sysctl -w net.ipv4.ip_local_port_range="1024 65000"
sysctl -w net.ipv4.tcp_keepalive_time="30"

##-- disable ipv6.
sysctl -w net.ipv6.conf.all.disable_ipv6="1"
sysctl -w net.ipv6.conf.default.disable_ipv6="1"
sysctl -w net.ipv6.conf.lo.disable_ipv6="1"
于 2013-01-18T19:44:41.670 に答える