Jetty アプリケーション サーバーに問題があります。昨日から、私たちは大きな問題を抱えています。場合によっては、Jetty が単にハングしているように見え、RPC 呼び出しを実行したくないことがあります。再起動すると通常の状態に戻りますが、数時間後に問題が再発します。
問題が発生した場合、Nginx のログでこのエラーが表示されることに気付きました。
2012/05/17 17:00:47 [error] 14728#0: *506735 upstream timed out (110: Connection timed out) while reading response header from upstream, client: xx.xxx.xxx.xx, server: www.MY-SERVER.com, request: "POST /com.xxxx.xxxx.XXXX/Service HTTP/1.1", upstream: "http://127.0.0.1:8080/com.xxxx.xxxx.XXXX/Service", host: "www.MY-SERVER.com", referrer: "https://www.MY-SERVER.com/"
正常に動作している場合でも、Nginx は次の警告を表示します。
2012/05/17 17:04:44 [warn] 14728#0: *506906 a client request body is buffered to a temporary file /var/cache/nginx/client_temp/0000088415,
クライアント: xx.xxx.xxx.xx、サーバー: www.MY-SERVER.com、リクエスト: "POST /report HTTP/1.1"、ホスト: "www.MY-SERVER.com"
Jetty がそのようにハングするのは、スレッドの問題が原因である可能性があると聞いたことがあります。どうすればそれを確認できますか? これが私のサーバー スレッド プールの構成です。問題の診断に役立つ可能性があります。
<!-- =========================================================== -->
<!-- Server Thread Pool -->
<!-- =========================================================== -->
<Set name="ThreadPool">
<!-- Default queued blocking threadpool -->
<New class="org.eclipse.jetty.util.thread.QueuedThreadPool">
<Set name="minThreads">10</Set>
<Set name="maxThreads">200</Set>
<Set name="detailedDump">false</Set>
</New>
</Set>
<!-- =========================================================== -->
<!-- Set connectors -->
<!-- =========================================================== -->
<Call name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
<Set name="host"><Property name="jetty.host" /></Set>
<Set name="port"><Property name="jetty.port" default="8080"/></Set>
<Set name="maxIdleTime">300000</Set>
<Set name="Acceptors">2</Set>
<Set name="statsOn">false</Set>
<Set name="confidentialPort">8443</Set>
<Set name="lowResourcesConnections">20000</Set>
<Set name="lowResourcesMaxIdleTime">5000</Set>
</New>
</Arg>
</Call>