NGINX キャッシュの誤動作によりシステムが混乱状態に陥る

NGINX キャッシュの誤動作によりシステムが混乱状態に陥る

当社では、CentOS/nginx fastcgi_cache を使用して、サーバー上の PHP ファイルへのリクエストをキャッシュしています。このファイルは頻繁にアクセスされ、頻繁に更新されるため、1 秒のキャッシュがあります。

通常、アクセス ログを確認すると、次のような内容が表示されます。

00:01 REQUEST 1 "EXPIRE"
00:01 REQUEST 2 "HIT"
00:01 REQUEST 3 "HIT"
00:02 REQUEST 4 "EXPIRE"
00:02 REQUEST 5 "HIT"
00:02 REQUEST 6 "HIT"

問題が発生すると、nginx に何かが起こり、突然ログが次のようになります (すべて同じ秒数であっても期限切れになります)。

00:01 REQUEST 1 "EXPIRE"
00:01 REQUEST 2 "EXPIRE"
00:01 REQUEST 3 "EXPIRE"
00:02 REQUEST 4 "EXPIRE"
00:02 REQUEST 5 "EXPIRE"
00:02 REQUEST 6 "EXPIRE"

重要な注意: これが起こる直前に、php-fpm は次のように報告します: 警告: [pool www] サーバーが max_children 設定 (35) に達しました。設定を上げることを検討してください。通知: 終了しています... 通知: 終了します。さようなら! 通知: fpm が実行中です。pid 27544 通知: 接続を処理する準備ができました

(これは通常の動作ではなく、非常にまれです)

作業中に php-fpm を再起動してキャッシュに影響があるかどうかを確認しようとしましたが、うまくいきませんでした。また、頻繁に呼び出される特定のファイルのストレス テストも試しましたが、システムを狂わせることはできません。また、キャッシュ キーが正しく構成されていることも確認しました。

他にどんな可能性があるか、誰かアイデアはありますか? 他に調べられることはありますか?

PS この問題が発生した場合に修正するには、ファイルへの要求を停止し、サービスを再起動すると、再び動作します。

助けてくれてありがとう、アロン

関連情報