web-dev-qa-db-ja.com

このエラーについて:apr_socket_recv:ピアによって接続がリセットされました(104)

したがって、Apacheベンチマーク(ab)を使用してベンチマークを行い、多数のリクエストを使用するとします。次に、テストの途中でこのエラーが発生することがあります。

それが何を意味するのかもわかりません。どうすれば修正できますか?それとも、サーバーが非常に多くのヒットを取得した場合に発生するものですか?問題は、10,000ヒットを実行すると、すべてが完全に実行されることです。もう一度実行すると、4000になり、エラーが発生します。

apr_socket_recv: Connection reset by peer (104)

私の設定について少し:私はnginxが静的リクエストを受け取り、動的リクエストをApacheに処理します。問題のファイルはnginxによってキャッシュから提供されるので、おそらくnginxがリクエストを処理する方法に関係していると思いますか?

アイデア?

14
Matthew

エラーは、セッションの途中で、もう一方の端(Webサーバー)が突然切断されたことを意味します。 Apacheまたはnginxのエラーログを調べて、疑わしいものがないかどうかを確認してください。

これは、サーバーへのリクエストの負荷が高いこと、つまり、すべてのスレッドがリクエストの処理でビジーであることを意味します。解決策:server.xmlファイルのコネクタのmaxThread属性数を増やすか、acceptCount属性値を増やします。

acceptcount:可能なすべての要求処理スレッドが使用中の場合の、着信接続要求の最大キュー長。キューがいっぱいになったときに受け取った要求はすべて拒否されます。

4
Kushal Bafna

同じ問題があり、サーバーのバージョンは次のとおりでした。

Server Version: Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips mod_fcgid/2.3.9 PHP/5.6.5 mod_Perl/2.0.9dev Perl/v5.16.3

不要なモジュールを削除して問題が解決しました:

Server Version: Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips

したがって、mod_fcgidmod_phpまたはmod_Perlのいずれかが問題を引き起こしています。使用していない場合は無効にしてみてください。

(補足:opcacheを使用している場合は、fast_shutdownも無効にしてください。問題の原因にもなっています:opcache.fast_shutdown = 0)

0
Ünsal Korkmaz

ここでの回答以外にも、私は他の多くの答えを読みました:

それらのどれも助けませんでした。

similar struggles を見た後、 wrk に切り替えることを考えました。

問題を見つける

問題は ephermalポート の量に関連しているようです。これはポート範囲なので、50000から25000に設定しようとしました。まだ運がない。次に、それがTIME_WAITおよび このブログ投稿 に関連しているという印象を受けました。私はそれを確認できたと思います:

_$ netstat -nat | awk '{print $6}' | sort | uniq -c | sort -n

    1 CLOSE_WAIT
    1 established)
    1 Foreign
    4 LISTEN
    8 SYN_SENT
   62 SYN_RECV
  351 ESTABLISHED
13916 TIME_WAIT
_

私が試したこと

ここまでは修正しませんでした:-/

_Sudo sysctl -a | grep net.ipv4.tcp_によると、私は:

_net.ipv4.tcp_tw_reuse = 0    # No luck setting only that to 1
net.ipv4.tcp_max_tw_buckets = 32768
net.ipv4.tcp_fin_timeout = 60  # Setting it to 5 didn't help either
_
0
Martin Thoma