use*_*734 8 php nginx laravel nginx-config php-7.3
Nginx 同时处理大量请求的最佳设置是什么?
我的服务器在 Ubuntu 20.04 LTS 上配置了 Nginx 和 PHP7.3。正在运行的应用程序是使用 Laravel 7 构建的。
这是我当前的配置:
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;
}
Run Code Online (Sandbox Code Playgroud)
我放置的 fastcgi 参数是通过 Google 找到的,并将数字调整为一些高值。
应用程序执行以下操作:
所有四个步骤都可以在几秒钟内完成。
完成此操作后,服务器的 CPU 和内存都没有达到峰值,唯一发生的事情是某些用户出现 502 超时。
看起来像 Nginx 中的服务器配置问题。
这是服务器发生时的统计信息:
旁注是我VerifyCsrfToken在 Laravel 中禁用了被调用以防止额外服务器负载的路由。
我错过了什么?我是否还必须更改一些 PHP-FPM 设置?如果是这样,我可以这样做吗?
这是域的 Nginx 错误日志告诉我的:
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"
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
小智 0
编辑/etc/security/limits.conf,输入:
# vi /etc/security/limits.conf
Run Code Online (Sandbox Code Playgroud)
为所有用户或nginx用户设置软硬限制,如下所示:
nginx soft nofile 10000
nginx hard nofile 30000
Run Code Online (Sandbox Code Playgroud)