IIS と PHP (および com dll) に問題があります。COM dll はかなり頻繁にクラッシュしますが、問題はそれが原因ではないと思います(Rapid Fail Protection を無効にしました)。dll は常にクラッシュしていましたが、約 3 週間前に約 15.000 ユーザー/日に達したときに問題が発生しました。
突然、すべての .php ファイルが応答しなくなり、サーバーが静的な .htm ファイルしか提供できなくなります。これは、php (php-cgi.exe) に問題があることを示しています。
これはほとんどの場合、Google アナリティクスで 180 ~ 220 人の「オンライン ユーザー」が表示されるピーク時 (午後 3 ~ 4 ~ 5 時) に発生します。これが発生すると (つまり、PHP がおかしくなる)、サーバーのタスク マネージャーで、通常は 10 ~ 12 個の php-cgi.exe プロセスの代わりに、30 または 40 個の php-cgi.exe プロセス (~30 個中) に急増することがわかります。 MB RAM each) 、これは php-cgi.exe がリクエストの処理を停止したために発生したと思います。サーバーには合計 8GB の RAM があります。
エラー ログには、connection_abandoned_by_regqueueとconnection_droppedの両方が含まれます。IIS または defaultapppool を手動で再起動しないと、ほとんどの場合、エラーはdefaultapppool not available 503になります。
1 つの問題は、イベント ビューアで、(プールを再起動する) タスクをアタッチできるように defaultapppool が無効になっているというメッセージが WAS からまったく表示されないことです。ログで無効として表示されるという事実。
私はタイムアウトをいじっていますが、何かがうまくいくようには見えません。
私の現在の理論は次のとおりです。
1) 多くのユーザー (Windows、IIS) で PHP がおかしくなり、処理できない
2) 多くのユーザーがオンラインになっていると、.dll がクラッシュして問題が発生する
3) 大量の場合、php+iis の互換性はそれほど良くありませんが、1 日あたり 15,000 というユーザー数が多すぎるとは思いません。ただし、ほとんどのリクエストは完了するまでに 50 ~ 300 ミリ秒かかることに注意してください。
PHP版はWebPI経由でインストールされた5.3.19、windows版はwindows 2008 R2 64bitです。
奇妙な理由で、notepad++ は放棄/無効化されたクエリのクエリ文字列を httperr ログにコピー不可の 16 進形式 (クエリ文字列は UTF8 - greek ) で表示しますが、通常のログではクエリ文字列は表示され、コピー可能です。以下のスクリーンショット。
現在の設定を含む 2 番目のスクリーンショットも提供しています
HTTPERR ログファイル...エラーは接続が切断されて始まり、少し後に接続が切断されて http://img32.imageshack.us/img32/3796/9nkv.jpg
2 番目のスクリーンショットは現在の設定です。1) 有効な php 拡張機能、2) defaultapppool (Web サイトが実行されるプール) 設定、3) php fastcgi 設定、4) php ランタイム制限。 http://img34.imageshack.us/img34/2531/o6d1.jpg
今日の最後の設定調整は、defaultapppool を 3 分ごとに自動リサイクルし、動的コンテンツ圧縮を無効にすることでした。それがどうなるか見てみましょう。
誰かが解決策に関するヒント/アイデアを持っているなら、私はそれを大いに感謝します!
前もって感謝します。