2012-10-01 9 views
8

Ich bekomme ständig 504 Gateway-Fehler, wenn mein PHP-Skript für länger als 60 Sekunden ausgeführt werden muss.504 Gateway Time-Out-Media-Tempel

Ich bin auf Media-Tempel auf einem dedizierten Server. Ich habe media temple kontaktiert und sie waren hilfreich, aber keiner ihrer Vorschläge scheint für mich zu funktionieren. Ich wurde angewiesen, diese Datei zu bearbeiten.

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

, die ich haben unter

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> 

so dass ich bis max alles versucht haben, so viel wie ich kann, um dies zu testen, ich bin Führen Sie einfach die folgende Funktion aus.

Sleep funktioniert bei jedem Wert unter 60 Sekunden zurück wahr, aber auf 60 bekomme ich 504 Gateway-Fehler.

mein phpinfo();

Ausgänge
max_execution_time 600 
max_input_time 180 

ich ein paar Post gesehen haben dieses fastcgi_connect_timeout auf die Steigerung haben aber keine Ahnung, wo diese auf Tempel Medien zu finden.

kann jemand helfen dank

UPDATE kann immer noch nicht dieses Problem beheben

nach mit Unterstützung im Chat mir gesagt wurde, ich nginx.conf bearbeiten muß? und wurde auf diesen Beitrag gerichtet http://blog.secaserver.com/2011/10/nginx-gateway-time-out/

kann nicht gut alle Werte auf meinem Hosting. client_header_timeout client_body_timeout send_timeout fastcgi_read_timeout

meine nginx.conf Datei sieht wie folgt aus

#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; 
} 

Das treibt mir irgendwelche Vorschläge verrückt ???

UPDATE Ich habe es geschafft, am Ende sortiert, nachdem viele Kopfschmerzen einen Blogbeitrag hinzugefügt haben, wie ich das hier behoben habe. http://devsforrest.com/116/boost-settings-on-media-temple-for-maximum-settings

hoffe, das hilft jemand

+1

Ich denke, das ist eine neue Einstellung, weil ich noch nie ein Problem mit ihren älteren Servern hatte, aber einen neuen Server hatte, den ich einschaltete und in das hineinlief. Dein Beitrag hat wirklich sehr geholfen. Meine App läuft im Apache-Modul-Modus und das Problem wurde behoben. Wirklich hilfreich! – David

+1

Hey @ user1503606 - dein letztes Update funktioniert! Posten Sie es als Ihre Antwort und erhalten Sie Kredit für das Finden der Lösung. – squarecandy

+0

Ich würde vorschlagen, dass Sie Ihre Anwendung umgestalten, um die Notwendigkeit zu beseitigen, ein Skript für mehr als 200 ms auszuführen. Sie müssen vielleicht einige schwere Logik in den Hintergrund verschieben. Verwenden Sie eine der folgenden Technologien, um Ihnen dabei zu helfen: AJAX, Nachrichtenwarteschlangen, Memcache, Flag-Dateien. –

Antwort

3

Auch ich hatte das gleiche Problem und ich löste es durch nginx.conf Datei bearbeiten. In den meisten Fällen kann dies durch Hinzufügen/Erhöhen der Anweisung send_timeout in nginx.conf behoben werden.

Finden Sie Ihre nginx.conf Datei (in der Regel bei /usr/local/nginx/nginx.conf oder manchmal /etc/nginx/sites-available/default gelegen), öffnen Sie es nano oder einen anderen Texteditor, und fügen Sie die folgenden Zeilen zwischen dem http {} so sieht es aus wie:

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; 
} 

In meinem Fall hatte ich wie einige andere Richtlinien zu erhöhen:

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

auch.

Nachdem Sie die Datei bearbeitet haben, nur nachladen nginx mit:

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

oder

sudo service nginx restart 

Das es beheben sollte.

(fand ich die Richtlinien hier: http://blog.secaserver.com/2011/10/nginx-gateway-time-out/)

PS: Ich sah den Kommentar des OP mit einem Link zu ihrem Blog aber ich dachte, hier die entsprechenden Informationen hinzugefügt helfen könnte.

Verwandte Themen