web-dev-qa-db-ja.com

Nginxフロントエンド、Apacheバックエンド、Magento

Magentoのインストールがありますが、これは顧客の観点からは完全に機能します。ただし、adminでバッチタスクを実行しようとすると、Nginxがブラウザーへの接続を早期に閉じてしまい、ブラウザーで「サーバーからの空の応答」エラーが発生することがよくあります。バックエンドタスクは、完了するまでApache内で実行されます。 PHPは、Magentoのデフォルトのmax_execution_timeout 18000秒で構成されています。

これに関連する記事を見つけて、Nginxの設定で「send_timeout」ディレクティブを使用することを提案しました。したがって、18000秒のmax_execution_timeと同じ値に設定します。次に、単純に65秒間スリープするPHPスクリプトを作成しました(60秒でタイムアウトするようです)。

問題を抱えているのはブラウザだけではありません。私は得る:

curl:(52)サーバーからの空の応答

cURLからも。 HTTPディレクティブに他のあいまいなNginx構成ルールはありません。誰もがここで何が起こっているのか、そしてこれが起こらないようにする方法を知っていますか?私は少し迷っています。

2
danneh3826

バッチタスクを小さなもの(各10秒など)に分割し、AJAXを使用してページを更新し、進行状況を表示することをお勧めします。

応答を60秒待つのは長すぎます。操作が長くなるほど、失敗する可能性が高くなります。

小さいバッチに分割することにより、1つがクラッシュしても、ほんの一部しか失われません。

1
Martin Samson

Fastcgiタイムアウトパラメータ(/etc/nginx/fastcgi_param.conf)を確認してください。

または、proxy_read_timeout 90;/etc/nginx.confを増やしてみてください。

1
Tim