HOWTO · Java
Java.Net.SocketTimeoutException: Tomcat での読み取りタイムアウト
今日のチュートリアルでは、java.net.SocketTimeoutException: Read timed out under Tomcat in Java の潜在的な理由と解決策について説明します。
このページの内容
今日のチュートリアルでは、Java の Tomcat で発生する java.net.SocketTimeoutException: Read timed out の潜在的な理由と解決策について説明します。
java.net.SocketTimeoutException: 読み取りがタイムアウトしました
サーバーがリクエストからデータを読み取ろうとすると、java.net.SocketTimeoutException: Read timed outが発生します。 ただし、データがクライアントから到着するまでに、許可されている時間よりもはるかに長い時間がかかっています。 timeout オプションには、クライアントとサーバーのアクティビティ用に開発者のデフォルト値を事前設定することができます。
java.net.SocketTimeoutException: Read timed out の原因
以下は、java.net.SocketTimeoutException: Read timed out を引き起こす可能性のあるいくつかの潜在的な原因です。
- サーバーはリクエストからデータを読み取ろうとしています。 ただし、データがクライアントから到着するまでに、指定された時間を大幅に超えています。 このコンテキストでの
タイムアウトは、多くの場合、Tomcat コネクタ -> connectionTimeout 属性で表されます。 - 多数の同時アクティビティがある場合、
keepalive機能がオンになっていると、このエラーが発生する可能性があります。 - タイムアウトになる前にデータが到着しない場合に発生します。
- サーバーのパフォーマンスが遅い場合。
java.net.SocketTimeoutException: Read timed out の解決策
-
ワークステーション ブラウザの Tomcat サーバーへの接続を制御する
.xmlコンテキスト ファイルとCONNECTOR定義の変更は、Tomcat Web のコンテキスト内でこの問題を解決するための 1つのアプローチです。 応用。 -
より簡潔にするために、
connectionTimeoutプロパティの値を調整します。 この値を上げると、エラー状態が発生しなくなります。 -
たとえば、以下のデータを含む次の
.xmlファイルがあります。<Connector executor="tomcat" port="8080" protocol="HTTP/1.1" connectionTimeout="30000" redirectPort="8443" /> -
アップロードのタイムアウトを無効にし、読み書き接続のタイムアウト設定をキャンセルするには、
disableUploadTimeout= "false"を追加します。<Connector executor="tomcat" port="8080" protocol="HTTP/1.1" connectionTimeout="30000" disableUploadTimeout="false" redirectPort="8443" /> -
keepAliveTimeout= "200000"パラメータを含めることで、接続の寿命を延ばすこともできます。<Connector executor="tomcat" port="8080" protocol="HTTP/1.1" connectionTimeout="30000" keepAliveTimeout= "200000" redirectPort="8443" />