Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

167
Views
Configuración óptima de Nginx para manejar miles de solicitudes en segundos

¿Cuáles son las configuraciones óptimas para que Nginx maneje MUCHAS solicitudes al mismo tiempo?

Mi servidor está configurado con Nginx y PHP7.3 en Ubuntu 20.04 LTS. La aplicación que se está ejecutando está compilada con Laravel 7.

Esta es mi configuración actual:

 location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; fastcgi_index index.php; fastcgi_buffer_size 14096k; fastcgi_buffers 512 14096k; fastcgi_busy_buffers_size 14096k; fastcgi_connect_timeout 60; fastcgi_send_timeout 300; fastcgi_read_timeout 300; }

Los parámetros fastcgi que coloqué los encontré a través de Google y ajusté el número a algunos valores altos.

La aplicación hace lo siguiente:

  • Más de 1500 usuarios están en línea
  • reciben una pregunta de opción múltiple enviada directamente a través de Pusher
  • responden la pregunta todos juntos casi a la vez = 1 solicitud al servidor a través de Ajax para cada respuesta
  • cada vez que se da una respuesta, los resultados se obtienen del servidor para cada usuario

Los cuatro pasos se pueden realizar en un par de segundos.

El servidor no alcanza su punto máximo de CPU ni de memoria cuando se hace esto, lo único que sucede es que algunos usuarios obtienen un tiempo de espera 502.

Parece un problema de configuración del servidor en Nginx.

Estas son las estadísticas del servidor del momento en que sucedió:

  • Sistema: 25 %, CPU: 22 %, E/S de disco: 0 %: 8 núcleos de procesador disponibles
  • RAM: 1.79GB - disponible 3GB

La nota al margen es que deshabilité VerifyCsrfToken en Laravel para las rutas que se llaman para evitar una carga adicional en el servidor.

¿Qué me estoy perdiendo? ¿Tengo que cambiar también algunas configuraciones de PHP-FPM? Si es así, ¿a qué y dónde puedo hacer eso?

Esto es lo que me dicen los registros de errores de Nginx del dominio:

 2020/04/25 13:58:14 [error] 7210#7210: *21537 connect() to unix:/var/run/php/php7.3-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 54.221.15.18, server: website.url, request: "GET /loader HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.3-fpm.sock:", host: "website.url"

Configuración de www.conf:

 pm.max_children = 100 pm.start_servers = 25 pm.min_spare_servers = 25 pm.max_spare_servers = 50 pm.max_requests = 9000 ;pm.process_idle_timeout = 10s; ;pm.status_path = /status
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

(11: Resource temporarily unavailable)

Eso es EAGAIN / EWOULDBLOCK , eso significa que nginx aceptó conexiones de clientes, pero no puede conectarse al socket UNIX de PHP-FPM sin bloquear (esperar), y probablemente, sin mirar el código fuente de nginx, nginx había intentado varias veces conectarse a dicho socket UNIX pero falló, por lo que nginx arroja una Connection refused .

Hay algunas maneras de resolver esto, ya sea:

  1. aumente el valor de configuración de listen.backlog en su configuración de grupo de PHP-FPM, con sus correspondientes net.ipv4.tcp_max_syn_backlog , net.ipv6.tcp_max_syn_backlog y net.core.netdev_max_backlog en sysctl .
  2. cree múltiples grupos de php-fpm, luego use la configuración de nginx upstream para usar estos grupos.
over 4 years ago · Santiago Trujillo Report

0

Edite /etc/security/limits.conf , ingrese:

 # vi /etc/security/limits.conf

Establezca un límite flexible y estricto para todos los usuarios o el usuario nginx de la siguiente manera:

 nginx soft nofile 10000 nginx hard nofile 30000
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!