5

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_regqueueconnection_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 分ごとに自動リサイクルし、動的コンテンツ圧縮を無効にすることでした。それがどうなるか見てみましょう。

誰かが解決策に関するヒント/アイデアを持っているなら、私はそれを大いに感謝します!

前もって感謝します。

4

3 に答える 3

0

この問題は、iis マネージャーの FASTCGI 機能における php-cgi.exe の 32 プロセスの制限によって引き起こされました。それを64に上げると、問題は一時的に解決しました。処理数が 32 になったのは、Web サービスの CPU 負荷が高いためです。最後に、より多くのコアとより多くの RAM を備えた専用サーバーに移行することが最終的な解決策でした。

于 2013-11-21T20:54:53.810 に答える
0
  1. iis で php FastCGI を実行しないでください。fcgi の代わりに php キャッシュを使用すると、パフォーマンスが向上する可能性があります。
  2. これは、恐ろしいほどスローロリスの攻撃に似ています。
  3. タイムアウト設定を確認し、fcgi が接続を正しく解放していることを確認する必要がある場合があります。http://php.net/manual/en/mysqlnd-ms.pooling.php
  4. dll の不具合が原因である可能性もあります。
  5. また、RAM の不良が原因であることがわかっているため、完全なメモリ チェックを実行する価値もあります。
于 2013-10-19T07:57:36.280 に答える