Ricevo costantemente 504 errori di gateway quando il mio script php deve essere eseguito per più di 60 secondi.504 Temp media gateway Timeout out
Sono su media server su un server dedicato. Ho contattato media temple e sono stati utili ma nessuno dei loro suggerimenti sembra funzionare per me mi è stato detto di modificare questo file.
/etc/httpd/conf.d/fcgid.conf
che ho al di sotto
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>
così ho cercato di massimo tutto quanto più posso, per testare questo io sono semplicemente eseguendo la funzione qui sotto.
function test504(){
@set_time_limit(0);
sleep(60);
echo "true";
}
sonno funziona su qualsiasi valore inferiore a 60 secondi il ritorno vero, ma sul 60 ottengo 504 errore di gateway.
my phpinfo(); uscite
max_execution_time 600
max_input_time 180
ho visto un paio di post su questo crescente fastcgi_connect_timeout, ma non hanno idea di dove trovare questo su Media Temple.
Chiunque può aiutare grazie
AGGIORNAMENTO ANCORA FIX CANT QUESTO
dopo aver chiacchierato con il supporto mi è stato detto che ho bisogno di modificare nginx.conf? ed è stato indirizzato a questo post http://blog.secaserver.com/2011/10/nginx-gateway-time-out/
non posso accettare nessuno dei valori sul mio hosting. client_header_timeout client_body_timeout send_timeout fastcgi_read_timeout
mio file nginx.conf assomiglia a questo
#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;
}
Questo mi sta facendo impazzire tutti i suggerimenti ???
UPDATE sono riuscito a ottenere questo risolto alla fine dopo un sacco di mal di testa aggiunto un post sul blog su come ho risolto questo qui. http://devsforrest.com/116/boost-settings-on-media-temple-for-maximum-settings
Spero che questo aiuti qualcuno
Penso che questa sia una nuova impostazione perché non ho mai avuto un problema con i loro server più vecchi, ma avevo un nuovo server che ho acceso e mi sono imbattuto in questo. Il tuo post ha davvero aiutato molto. La mia app è in esecuzione in modalità Modulo Apache e questo ha risolto il problema. Davvero utile! – David
Ehi @ user1503606 - il tuo ultimo aggiornamento funziona! Pubblicalo come risposta e ottieni credito per aver trovato la soluzione. – squarecandy
Ti suggerisco di rifattorizzare la tua applicazione per rimuovere la necessità di eseguire uno script per più di 200 ms. Forse dovrai spostare una logica pesante sullo sfondo. Utilizzare una delle seguenti tecnologie per aiutarvi con questo: AJAX, code di messaggi, memcache, file di flag. –