12

500 Internal Serverさまざまな共有ホスト上の PHP / MySQL ベースのサイトで、ランダムなエラーが発生しています。共有 Linux サーバーで CGI/FastCGI を介して PHP 5.2.17 を使用しています。ログを見ると、次のように表示されます。

[error] [client 75.71.176.224] (104)Connection reset by peer: FastCGI: comm with server "/dev/shm/blackmou-php.fcgi" aborted: read failed, referer: ...
[error] [client 75.71.176.224] FastCGI: incomplete headers (0 bytes) received from server "/dev/shm/blackmou-php.fcgi", referer:  ...
[error] [client 75.71.176.224] (104)Connection reset by peer: FastCGI: comm with server "/dev/shm/blackmou-php.fcgi" aborted: read failed, referer:  ...
[error] [client 75.71.176.224] FastCGI: incomplete headers (0 bytes) received from server "/dev/shm/blackmou-php.fcgi", referer:  ...

誰でもこれを解決する方法を知っていますか?

4

2 に答える 2

13

通常、この問題はホスト固有の問題ではなく、構成によっては開発者にも関連しています。ただし、一部のホストは FastCGI にかなり厳密であり、機能が制限されます。アプリケーションで特に FastCGI を使用する必要がない限り、通常は FastCGI を使用せずに mod_php を使用する方が簡単です。

fcgi ラッパー (/dev/shm/blackmou-php.fcgi にあるもの) または FastCGI スポーン用の .htaccess を確認する必要があります。これにより、問題が発生しているファイルとそれらのファイルにあるコードを知らなくても、より適切にサポートできます。また、ホストは Apache、LightHttpd、または Nginx (または組み合わせ) を使用していますか? その時点で、PHP 5.3.9+ を使用するように更新することを強くお勧めします

これはさまざまな問題によって引き起こされる可能性があるため、FastCGI は、サイト/スクリプトがサービス拒否攻撃やメモリ リークなどによるクラッシュから効果的に防止されます (例: 80,000 の接続を単純にドロップして数を制限するだけで処理しようとする)。要求の数またはタイムアウトやプロセスの終了によって無限ループに陥る)

特にこのエラーは、通常、idle_timeout (デフォルトでは 30 秒) または最大子プロセスの制限が原因で発生します。また、誰かが実行時間の長いスクリプトを開始し、スクリプトが完了する前にブラウザ/接続を閉じたことが原因である可能性もあります。

FastCGI はプロセス ラッパーを起動し、コマンドを実行し、プロセスが完了する前にタイムアウトし、接続がピアによってリセットされたと見なされます。

もう 1 つの例は、最大の子 (maxProcesses) に達した場合です (例: 多くのサイトでは例として 2 または 4 が示されていますが、実際には平均トラフィックに応じて 20 または 50 が必要になる場合があります)。すべての子が現在アクティブであり、追加の要求/接続が確立されると、子は maxProcesses に制限され、FastCGI はアクティブな子を共有しません。そのため、構成に応じて、最初にプロセスを終了して新しい子プロセスを開始するか、要求をドロップする必要があります。

設定に関する詳細情報は次のとおりです。

http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html

http://www.fastcgi.com/drupal/node/10

ラッパーの例

PHP_FCGI_CHILDREN=0 #no limit
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=10000
export PHP_FCGI_MAX_REQUESTS

アップデート

これに加えて、これはphpメモリ制限によっても引き起こされる可能性があります

上記で問題が解決しない場合は、php.ini を更新してmemory_limitを増やしてください

于 2013-10-07T23:31:52.890 に答える