Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

194
Vistas
La llamada Apache PHP permanece en estado W en el estado del servidor durante minutos

Tengo una situación extraña. Tengo una página web que realiza varias llamadas AJAX a un archivo php. Algunas de estas llamadas se atascan durante varios segundos o minutos; lo notó en Inspeccionar elemento en Google Chrome -> Red.

Revisé el registro de apache y noté que estas llamadas tardan mucho en procesarse, como se puede ver en el tiempo que lleva servir la página php. La página tiene algunas llamadas de db, pero los sqls son súper rápidos y no retrasan nada. De hecho, comenté el código en la página php, pero aún así el registro de apache muestra que estas llamadas tardan mucho en cargarse.

Verifiqué el estado del servidor y noté que los procesos se atascaron en el estado W durante varios minutos. Dado que las llamadas ajax ocurren en bucle, tenemos varias llamadas que van al mismo tiempo a la misma página, con diferentes variables GET. Algunos de ellos terminan bastante rápido y otros toman tiempo. No son las mismas llamadas que se retrasan cada vez... las llamadas que entran en estado W cambian cada vez (las variables GET son diferentes).

El mismo código funciona muy bien en nuestro servidor de prueba. El problema está en el servidor de producción. La producción tiene habilitado SSL, pero por lo demás no veo ninguna diferencia entre los servidores.

Probé pstack PID en los procesos de apache que se atascan, pero no estoy seguro de cómo leer el resultado. Aquí está.

 root# pstack 14759 #0 0x00007f0352a4d1d7 in flock () from /lib64/libc.so.6 #1 0x00007f034b50742a in ?? () from /etc/httpd/modules/libphp5.so #2 0x00007f034b50752e in ?? () from /etc/httpd/modules/libphp5.so #3 0x00007f034b5062e7 in php_session_start () from /etc/httpd/modules/libphp5.so #4 0x00007f034b506aa9 in ?? () from /etc/httpd/modules/libphp5.so #5 0x00007f034b685568 in ?? () from /etc/httpd/modules/libphp5.so #6 0x00007f034b61f42b in execute () from /etc/httpd/modules/libphp5.so #7 0x00007f034b5fe026 in zend_execute_scripts () from /etc/httpd/modules/libphp5.so #8 0x00007f034b5abfb6 in php_execute_script () from /etc/httpd/modules/libphp5.so #9 0x00007f034b68d132 in ?? () from /etc/httpd/modules/libphp5.so #10 0x000055d5e59ea840 in ap_run_handler () #11 0x000055d5e59eac09 in ap_invoke_handler () #12 0x000055d5e59f7da0 in ap_process_request () #13 0x000055d5e59f4cc8 in ?? () #14 0x000055d5e59f0f20 in ap_run_process_connection () #15 0x000055d5e59fc9fb in ?? () #16 0x000055d5e59fce72 in ?? () #17 0x000055d5e59fddc7 in ap_mpm_run () #18 0x000055d5e59d487e in main ()``` Can someone help me figure out why this process is waiting? Btw, I have disabled mod_evasive so it cannot be due to some kind of rate limiting. But it seems like the issue is very similar to that I would observe when I hit a rate limit.
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

php_session_start () en el pstack fue la pista. Busqué sesiones en llamadas ajax/php. Y aquí estaba el problema. Ajax hace llamadas asíncronas y php no puede manejar múltiples llamadas al mismo tiempo. Cada llamada bloquea el archivo para la sesión y luego la sesión debe quedar libre antes de que la siguiente llamada pueda bloquearla.

Cambié mis sesiones de archivos a mysql db y esto resolvió el problema.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda