2012-10-01 15 views
8

私のPHPスクリプトを60秒以上実行する必要がある場合、私は絶えず504ゲートウェイエラーを受けています。504ゲートウェイタイムアウトメディアテンプル

私は専用サーバーのメディアテンプルにいます。私はメディアの寺院に連絡して、彼らは助けになったが、彼らのsuggesionのどれも私のために動作していないようだ、私はこのファイルを編集するように言われた。私は

以下
LoadModule fcgid_module modules/mod_fcgid.so 

<IfModule mod_fcgid.c> 

<IfModule !mod_fastcgi.c> 
    AddHandler fcgid-script fcg fcgi fpl 
</IfModule> 

    FcgidIPCDir /var/run/mod_fcgid/sock 
    FcgidProcessTableFile /var/run/mod_fcgid/fcgid_shm 
    FcgidIdleTimeout 300 
    FcgidMaxRequestLen 1073741824 
    FcgidProcessLifeTime 10000 
    FcgidMaxProcesses 64 
    FcgidMaxProcessesPerClass 15 
    FcgidMinProcessesPerClass 0 
    FcgidConnectTimeout 600 
    FcgidIOTimeout 600 
    FcgidInitialEnv RAILS_ENV production 
    FcgidIdleScanInterval 600 

</IfModule> 

に私は私はこれをテストするために、私はできる限り最大のすべてにしようとしていてい

/etc/httpd/conf.d/fcgid.conf

以下の関数を実行するだけです。

スリープは60秒以下の値では正常に戻りますが、60になると、504ゲートウェイエラーが発生します。

私のphpinfo();出力

max_execution_time 600 
max_input_time 180 

私はこのfastcgi_connect_timeoutの増加にいくつかの記事を見たが、どこのメディアの寺院でこれを見つけるには考えを持っていませんでした。

誰もが感謝

UPDATE STILL CANT FIX THIS

を助けることができるサポートとおしゃべりした後、私はnginx.confを編集する必要があると言われていますか?このポストに向けられましたhttp://blog.secaserver.com/2011/10/nginx-gateway-time-out/

私のホスト上の値のいずれかを細かく設定できます。

fastcgi_read_timeout私nginx.confファイルsend_timeout client_body_timeout client_header_timeout は、これは任意の提案私は狂気運転しているこの

#error_log /var/log/nginx/error.log info; 

#pid  /var/run/nginx.pid; 


events { 
    worker_connections 1024; 
} 


http { 
    include  mime.types; 
    default_type application/octet-stream; 

    #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 
    #     '$status $body_bytes_sent "$http_referer" ' 
    #     '"$http_user_agent" "$http_x_forwarded_for"'; 

    #access_log /var/log/nginx/access.log main; 

    sendfile  on; 
    #tcp_nopush  on; 
    #keepalive_timeout 0; 
    keepalive_timeout 120; 
    #tcp_nodelay  on; 

    #gzip on; 
    #gzip_disable "MSIE [1-6]\.(?!.*SV1)"; 

    server_tokens off; 

    include /etc/nginx/conf.d/*.conf; 
} 

のように見えます?

UPDATE私は、これをここで修正した方法についてのブログ記事を頭痛の多くが追加した後に、これを最終的に分類することができました。 http://devsforrest.com/116/boost-settings-on-media-temple-for-maximum-settings

ホープこれは誰か

+1

これは新しい設定だと思います。古いサーバーで問題が発生したことはありませんでしたが、新しいサーバーが稼働してこのサーバーに接続したためです。あなたの投稿は本当に助けになりました。私のアプリはApache Moduleモードで動作していますが、これでも問題は解決しました。本当に役に立ちました! – David

+1

ちょっと@ user1503606 - あなたの最後のアップデートが動作します!それをあなたの答えとして掲示し、解決策を見つけるためのクレジットを得る。 – squarecandy

+0

私はあなたのアプリケーションをリファクタリングして、スクリプトを200ms以上実行する必要性を取り除くことをお勧めします。いくつかの重いロジックをバックグラウンドに移動する必要があるかもしれません。 AJAX、メッセージキュー、memcache、フラグファイルなど、以下のテクノロジのいずれかを使用してサポートしてください。 –

答えて

3

私も同じ問題を持っていたと私はnginx.confファイルを編集して、それを解決するのに役立ちます。ほとんどの場合、これはnginx.confのsend_timeoutディレクティブを追加/増やすことで修正できます。

、(通常は/usr/local/nginx/nginx.confまたは時々/etc/nginx/sites-available/defaultにある)あなたのnginx.confファイルを探すナノまたはその他のテキストエディタを使用してそれを開き、HTTP {}の間に次の行を追加しますので、それは次のようになりますあまりに

client_header_timeout 10m; 
client_body_timeout 10m; 
send_timeout 10m; 
fastcgi_read_timeout 10m; 

:私の場合は

http { 
include  mime.types; 
default_type application/octet-stream; 

#log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 
#     '$status $body_bytes_sent "$http_referer" ' 
#     '"$http_user_agent" "$http_x_forwarded_for"'; 

#access_log /var/log/nginx/access.log main; 

sendfile  on; 
#tcp_nopush  on; 
#keepalive_timeout 0; 
keepalive_timeout 120; 
#tcp_nodelay  on; 

#gzip on; 
#gzip_disable "MSIE [1-6]\.(?!.*SV1)"; 

server_tokens off; 

send_timeout 10m; 

include /etc/nginx/conf.d/*.conf; 
} 

は、私はのようないくつかの他のディレクティブを高める必要がありました。あなたがファイルを編集したら

だけでnginxのリロード:

kill -HUP `ps -ef | grep nginx | grep master | awk {'print $2'}` 

またはそれを修正する必要があり

sudo service nginx restart 

(私はここでディレクティブが見つかりました:http://blog.secaserver.com/2011/10/nginx-gateway-time-out/

PS:私は自分のブログへのリンクがOPによるコメントを見ましたが、私はここに関連する情報を追加することに役立つかもしれないと思いました。

関連する問題