0

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>
4

1 に答える 1

0

まず最初に、対処している jetty のバージョンについて言及する必要があります。これは、状況をいくつかの既知の問題と比較する上で非常に重要です。

一般に、7.6.3.v20120416 または 8.1.3.v20120416 のいずれかの最新の jetty リリースに更新することのみをお勧めします。

それで、スレッド ダンプを取得して、問題が発生している場所を確認する必要があります。jvm の nio バグに対する修正の試みに起因する問題がいくつかありますが、以前よりも新しいブラウザーではるかに頻繁に使用されるハーフ クローズに関連するいくつかの SSL の問題がありますが、サーバー ハングの問題の大部分は次のとおりです。 jetty 自体にデプロイされたアプリケーションから。そのため、スレッド ダンプを取得するか、理想的には複数回続けて取得すると、問題が発生している場所を特定するのに役立ちます。

チェックするもう1つのことは、使用しているJavaのバージョンです。Java 6パッチレベル2xは、nioとsslで何らかの形でほとんどすべてが悪く、最新の3xだけが物事にある程度の正常性を回復しました。

そのため、最初にスレッド ダンプを取得して、サーバーで何が起こっているかを把握してから、jetty 固有の問題かどうかを確認する必要があります。明らかな桟橋の問題を示すスタック トレースの一部を投稿できれば、どこかに到達できます。スレッド ダンプを取得し、データベースの競合などを確認するためだけに、このような状況を見た回数は数えきれません。

于 2012-05-18T00:57:02.547 に答える