SocketTimeoutExceptionの解決方法です。読み込みがタイムアウトした
2022-02-08 06:13:44
問題発生環境:ssm+mysql+gridFS+tomcat
問題のコードスニペット
public void write(OutputStream os, InputStream is) {
try (BufferedOutputStream bos = new BufferedOutputStream(os); BufferedInputStream bis = new BufferedInputStream(is)) {
int count;
byte[] buffer = new byte[1024];
while ((count = bis.read(buffer)) > 0) {
bos.write(buffer, 0, count);
}
os.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
ここで、出力ストリームはresponse.getOutPutStream()を使用しています。
問題:mongodbはプロジェクトとは別のサーバーに配備されているため、大きなファイルの読み込みにtomcatの制限である1接続の生存時間よりも長くかかり、tomcatが接続がタイムアウトしたと判断してしまう。
解決方法 tomcat の server.xml を修正し、以下のように設定します。
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000" disableUploadTimeout="false"
redirectPort="8443" />
disableUploadTimeout="false" を追加して、読み取り/書き込みの接続タイムアウトの設定を削除します。
または
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
keepAliveTimeout="100000"
redirectPort="8443" />
keepAliveTimeout="100000"を増やして、接続の生存時間を長くする。
関連
-
アクセス制限について アプリケーションの種類がAPIでない(必要なライブラリの制限)。
-
jd-gui Java Exceptionが発生しました。
-
アイデア Springboot Web プロジェクトを jar にパッケージ化する場合、Error: 無効または破損した jarfile x.jar 解決策
-
[オリジナル】java学習ノート【II】よくあるエラー クラスパス上のクラスファイルが見つからない、またはアクセスできない場合
-
IDEA パッケージステートメントの欠落
-
テストが見つかりませんでした
-
Java-Myeclipse エラー解決 構文エラー、TryStatem を完了するために "Finally" を挿入する。
-
Java静的コード解析 - 仕様チェック - checkstyle
-
スレッド "main "での例外 java.lang.NullPointerException どのようにそれを解決するには?
-
Tomcat 8は、「少なくとも1つのJARがTLDをスキャンされたが、TLDが含まれていない」問題を解決します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Dateが型に解決できない問題を解決する
-
プロローグでのコンテンツは禁止されています
-
eclipse の実行時に java 仮想マシンが見つからなかった
-
スレッド "main" で例外発生 java.net.BindException: アドレスは既に使用中です。NET_Bind
-
あるコードに出会いましたが、何に使うのか理解できません。 List<String> list = new ArrayList<String>() { { a
-
java 例外。Javaツールの初期化
-
JSPで「リストが型解決できない!」の解決方法
-
ブラウザでの大容量ファイルスライスアップロード(Javaサーバサイド実装)
-
Google Chromeのエラー「Not allowed to load local resource」の解決策について
-
javaException: 比較メソッドが一般契約に違反しています!