NATネットワークで発生するセッションの奇妙な問題

NATネットワークで発生するセッションの奇妙な問題

同じリモートネットワーク上の2つのデバイスのうちの1つが60秒でタイムアウトする奇妙なApacheの問題が発生しました。 TimeOutを120秒に設定して時間を2分に延長できますが、2番目のデバイスはまだサーバーとの接続を失います。 Aは、「サーバーが応答を停止したためページを開けません」(Safari)という一般的なメッセージを受け取ります。

私のテストは、デスクトップとiPad Proに単純なページ(日付のみを印刷するPHPスクリプト)をロードすることでした。 60秒待ってからiPadを更新すると、エラーメッセージが表示されました。この結果は、多くのエンドユーザーネットワークで複製できます。

私の最初の考えは、Apacheがリモートネットワークの各エンティティに対してセッションを維持する必要があるということでした。これは、Apacheは同じIPで起動されていますが、mod_sessionが何も影響しないことを確認するためです。

ターゲットサーバーは、Centos 7、Apache 2.4(完全にパッチ適用)、PHP 5.6.4を実行するAWSインスタンスです。 (PHP 7.Xにアップデートするプロジェクトが進行中であることがわかっています。)

Apache 2.2を実行しているCentos 6サーバーではこれは発生せず、既存の環境は開発環境なので、ユーザーが4人以下であることを指摘したいと思います。

どんな助けでも大変感謝します。

設定:

httpd.conf:

タイムアウト300
KeepAliveを開く

プリフォーク設定:

 StartServers       8<br>
 MinSpareServers    5<br>
 MaxSpareServers   20<br>
 ServerLimit      256<br>
 MaxClients       256<br>
 MaxRequestsPerChild  4000<br>
 MaxConnectionsPerChild 0<br>

いくつかの追加の注意:これはPHPファイルでのみ発生するようです。テキストだけを含むファイルでも発生します。

答え1

同じ症状が現れる人のために言うと、問題は以前のバージョンのオペレーティングシステムからインポートされたカーネル設定です。

"net.ipv4.tcp_tw_recycle=1" が設定されていますが、設定しないでください。注文する

"sysctl net.ipv4.tcp_tw_recycle=0"

すべてを解決しました。同じ問題が発生した場合は、コマンドを実行してすぐに結果を確認してください。

復元する必要がある場合は、以下を実行してください。

"sysctl net.ipv4.tcp_tw_recycle=1"

元に戻すもちろん、これを/etc/sysctl.confファイルに追加すると、永久に変更されます。

これがある時点で誰かに役立つことを願っています。

関連情報