2012-10-01 17 views
8

Recibo constantemente 504 errores de puerta de enlace cuando mi script php necesita ejecutarse durante más de 60 segundos.504 Gateway Time-out media temple

Estoy en media temple en un servidor dedicado. Me he puesto en contacto con Media Temple y han sido útiles, pero ninguna de sus sugerencias parece funcionar para mí, me dijeron que debía editar este archivo.

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

, que tengo que a continuación

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> 

por lo que he tratado de máximo todo lo más que pueda, para probar esta soy simplemente ejecutando la función a continuación.

function test504(){ 
     @set_time_limit(0); 
     sleep(60); 
     echo "true"; 
    } 

Dormir funcionará en cualquier valor inferior a 60 segundos devolviendo verdadero, pero en 60 me da error de puerta de enlace 504.

my phpinfo(); salidas

max_execution_time 600 
max_input_time 180 

he visto algunos post sobre el aumento de este fastcgi_connect_timeout pero no tienen idea de dónde encontrar esto en media temple.

¿Alguien puede ayudar gracias

ACTUALIZACIÓN TODAVÍA ESTA REVISIÓN DEL CANTO

después de charlar con el apoyo me han dicho que tengo que editar nginx.conf? y fue dirigido a esta publicación http://blog.secaserver.com/2011/10/nginx-gateway-time-out/

No puedo corregir ninguno de los valores en mi alojamiento. client_header_timeout client_body_timeout send_timeout fastcgi_read_timeout

mi archivo nginx.conf se parece a esto

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

Esto me está volviendo loca alguna sugerencia ???

ACTUALIZACIÓN Pude ordenarlo al final después de que muchos dolores de cabeza añadieron una publicación en el blog sobre cómo lo solucioné aquí. http://devsforrest.com/116/boost-settings-on-media-temple-for-maximum-settings

Espero que esto ayude a alguien

+1

Creo que esta es una nueva configuración porque nunca he tenido un problema con sus servidores anteriores pero tenía un nuevo servidor que encendí y me encontré con esto. Tu publicación realmente ayudó mucho. Mi aplicación se ejecuta en modo Módulo Apache y esto todavía solucionó el problema. ¡De mucha ayuda! – David

+1

¡Hola @ usuario1503606 - su última actualización funciona! Publique como su respuesta y obtenga crédito por encontrar la solución. – squarecandy

+0

Le sugiero que refactorice su aplicación para eliminar la necesidad de ejecutar un script durante más de 200ms. Tal vez necesites mover un poco de lógica pesada al fondo. Utilice cualquiera de las siguientes tecnologías para ayudarle con eso: AJAX, colas de mensajes, Memcache, archivos de banderas. –

Respuesta

3

yo también tenía el mismo problema y lo resolví editando nginx.conf archivo. En la mayoría de los casos, esto puede solucionarse agregando/aumentando la directiva send_timeout en nginx.conf.

Encuentra su archivo nginx.conf (normalmente se encuentra en /usr/local/nginx/nginx.conf o, a veces /etc/nginx/sites-available/default), abrirlo con nano o cualquier otro editor de texto, y añadir las siguientes líneas entre el http {} por lo que parece:

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

En mi caso, he tenido que aumentar algunas otras directivas como:

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

también.

Una vez que haya editado el archivo, simplemente recargar con nginx:

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

o

sudo service nginx restart 

Eso debería arreglarlo.

(me encontré con las directivas aquí: http://blog.secaserver.com/2011/10/nginx-gateway-time-out/)

PD: vi el comentario de la OP con un enlace a su blog, pero pensé que añadir la información relevante aquí podría ayudar.