web-dev-qa-db-ja.com

mod_fcgid:読み取りデータタイムアウトエラー

(mod_phpを使用する前に)fcgidを使用するアンマネージドサーバーに移動しましたが、エラーログに次のようなエラーが大量に表示されます。

[2012年4月23日21:17:12] [警告] [クライアント66.249.68.233] mod_fcgid:31秒でデータタイムアウトを読み取り[2012年4月23日21:17:12] [エラー] [クライアント66.249.68.233]早期終了スクリプトヘッダー:index.php

[2012年4月23日17:59:51] [警告] [クライアント74.117.180.58] mod_fcgid:31秒でデータタイムアウトを読み取り[2012年4月23日17:59:51] [警告] [クライアント74.117.180.58](110 )接続がタイムアウトしました:mod_fcgid:ap_pass_brigadeがhandle_request_ipc関数で失敗しました

バックアップ中の負荷が高い(2-3)と、これらの数が増えるようです。バックアップ中にtar/mysqldumpが実行されているときに、負荷3の間にこれを複製することもできました(ユーザーに500エラーメッセージが表示された後、 30秒)。サーバーが過負荷になっていませんか?この質問は関連があるようです ダウンロードが中断された場合、PHP + Fcgidがハングします が同じではありません。

これは一流のサーバーであり、これが多すぎることに驚いています。ここにいくつかの仕様があります:6-7 Drupal Webminのあるサイト

  • インテル®Core™i7-2600クアッドコアを含むハイパースレッディングテクノロジー
  • RAM 16 GB DDR3 RAM
  • ハードディスク2 x 3 TB SATA 6 Gb/s HDD 7200 rpm(ソフトウェアRAID 1)
  • NIC1 Gbit OnBoardが100 Mbitで接続
4
giorgio79

これらのエラーは、fcgid.confが言うように、スクリプトが31秒より長く実行されていたために終了したことを意味します。標準のタイムアウトは40秒です。

Test.phpを作成することで、この動作を簡単に確認できます。

<?php sleep(32); ?>

これにより、エラー500が発生し、このエラーがログに記録されます。

これを解決するには2つの方法があります。

  1. Index.php(または背後のアプリケーション)を再作成し、潜在的なループ問題(スクリプトが永久に実行され、31秒後に終了する)を解決します。
  2. タイムアウトを高く設定します。この設定は別の仮想ホストが読み込まれるたびに変更され、生成されたプロセスが終了するまで残るため、すべての仮想ホストに対して行う必要があります(SSLを忘れないでください!)。
    最も簡単な方法は、/etc/Apache2/mods-available/fcgid.confを編集することです。これは私たちが使用しているものです:

    IdleTimeout 3600
    ProcessLifeTime 7200
    IPCConnectTimeout 8
    IPCCommTimeout 600
    BusyTimeout 300

編集:ああ、2番目のエラーは、URLの過度に長いクエリ文字列に関連しています。より長いクエリ文字列を許可するには、fcgid.confも編集して挿入します

MaxRequestLen 15728640

実行中のすべてのプロセスを強制終了するためにApacheを再起動して、新しい構成を取得することを忘れないでください。

5
SebiF

mysqldumpはデフォルトで、実行中にデータベースを書き込みロックするため、バックアップ中にデータが変更されず、破損を引き起こす可能性があります。 Drupalリクエストごとにデータベースに書き込むため、mysqldumpの実行中にリクエストがハングし、最終的にタイムアウトします。

InnoDBを使用している(または変換できる)場合は、 Percona XtraBackup を使用してホットバックアップを実行できます。それ以外には、mysqldumpをtarまたはgzipにパイプしないでください。 .sqlファイルをダンプし、mysqldumpが完了した(およびロックを解放した)後にtar/gzipを実行します。

また、fcgidの特定のバージョンでは、 VirtualHostブロックの設定のみを適用し、最後に読み取ったブロックの設定をグローバルに適用する になるバグがあることにも注意してください。

2
xofer