如何优化Nginx与PHP-FPM?

如何优化Nginx与PHP-FPM?

服务器是 E3-1240v3
32GB Ram

如果我尝试更改这些文件的值,它们会将访问者限制为 3k 到 5k。
但是此设置最多可处理 9k

但服务器资源几乎是免费的。

我正在努力处理 10K+ 的流量。流量会很大。但我的配置不好,限制了流量。

www.conf

pm.max_children = 400
pm.start_servers = 40
pm.min_spare_servers = 40
pm.max_spare_servers = 70
pm.max_requests = 800

nginx.conf

worker_processes 3;
events {
worker_connections 8096;
accept_mutex on;
accept_mutex_delay 500ms;
multi_accept on;
use epoll;
}

sendfile on;
tcp_nodelay on;
tcp_nopush on;


client_body_buffer_size 128K;
client_max_body_size 8m;

client_body_timeout 15;
client_header_timeout 15;
send_timeout 10;
keepalive_timeout 15; 

open_file_cache max=5000 inactive=20s;
open_file_cache_valid 60s;
open_file_cache_min_uses 4;
open_file_cache_errors on;

我该如何有效配置来处理更多访客?

编辑

顶部-c

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
22093 nginx     20   0  393060  11848   3828 S  31.9  0.0  10:17.70 php-fpm: pool www
 1495 mysql     20   0 4793852 318444   9824 S  23.6  1.0 796:41.59 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin -+
 3135 nginx     20   0  393108  12112   3832 R   7.3  0.0  10:30.35 php-fpm: pool www
 6839 nginx     20   0  392804  11832   3828 R   7.3  0.0  10:37.57 php-fpm: pool www
14311 nginx     20   0  392800  11820   3828 S   7.3  0.0  10:39.68 php-fpm: pool www
  889 nginx     20   0  393072  11832   3828 R   7.0  0.0  10:38.91 php-fpm: pool www
 1153 nginx     20   0  393100  12100   3832 S   7.0  0.0  10:38.73 php-fpm: pool www
 5768 nginx     20   0  392736  11708   3836 R   7.0  0.0  10:49.05 php-fpm: pool www
 6675 nginx     20   0  393100  11892   3832 S   7.0  0.0  10:38.87 php-fpm: pool www
 6840 nginx     20   0  393108  12136   3832 S   7.0  0.0  10:35.61 php-fpm: pool www
12767 nginx     20   0  393156  12092   3832 R   7.0  0.0  10:23.34 php-fpm: pool www
21948 nginx     20   0  393108  12132   3828 S   7.0  0.0  10:18.22 php-fpm: pool www
  888 nginx     20   0  392800  11848   3848 S   6.6  0.0  10:41.74 php-fpm: pool www
 1152 nginx     20   0  393092  11928   3836 R   6.6  0.0  10:37.03 php-fpm: pool www
 5036 nginx     20   0  393076  11852   3848 S   6.6  0.0  10:41.52 php-fpm: pool www
12692 nginx     20   0  393056  11832   3828 S   6.6  0.0  10:25.90 php-fpm: pool www
22033 nginx     20   0  393076  11904   3832 S   6.6  0.0  10:09.92 php-fpm: pool www
22034 nginx     20   0  393092  11864   3832 S   6.6  0.0  10:14.02 php-fpm: pool www
22092 nginx     20   0  392800  11832   3832 S   6.6  0.0  10:22.43 php-fpm: pool www
22184 nginx     20   0  393108  12100   3832 S   6.6  0.0  10:17.56 php-fpm: pool www
22185 nginx     20   0  393104  12100   3832 S   6.6  0.0  10:14.99 php-fpm: pool www
27712 nginx     20   0  393100  12116   3848 S   6.6  0.0  10:47.98 php-fpm: pool www
  790 nginx     20   0  393108  12096   3832 S   6.3  0.0  10:41.45 php-fpm: pool www
 1063 nginx     20   0  392548  11584   3836 S   6.3  0.0  10:47.35 php-fpm: pool www
 3058 nginx     20   0  393124  12100   3832 R   6.3  0.0  10:35.90 php-fpm: pool www
 5933 nginx     20   0  392800  11832   3836 S   6.3  0.0  10:43.31 php-fpm: pool www
 6737 nginx     20   0  393056  11840   3828 S   6.3  0.0  10:36.62 php-fpm: pool www
 6838 nginx     20   0  393056  11932   3832 S   6.3  0.0  10:37.22 php-fpm: pool www
13061 nginx     20   0  393140  11896   3836 R   6.3  0.0  10:33.85 php-fpm: pool www
13146 nginx     20   0  392820  11832   3828 R   6.3  0.0  10:39.73 php-fpm: pool www
22183 nginx     20   0  392924  11724   3828 S   6.3  0.0  10:18.64 php-fpm: pool www
 3134 nginx     20   0  393108  12104   3828 S   6.0  0.0  10:38.90 php-fpm: pool www
 6736 nginx     20   0  393100  12112   3828 S   6.0  0.0  10:30.51 php-fpm: pool www
22091 nginx     20   0  392800  11832   3832 S   6.0  0.0  10:15.83 php-fpm: pool www
10880 nginx     20   0  392804  11844   3844 S   5.6  0.0  10:40.13 php-fpm: pool www
22090 nginx     20   0  393076  11876   3828 S   5.6  0.0  10:21.79 php-fpm: pool www
10430 nginx     20   0   53984   7700   1200 S   1.7  0.0   0:33.71 nginx: worker process


Tasks: 197 total,   4 running, 192 sleeping,   0 stopped,   1 zombie
%Cpu(s): 25.6 us,  2.3 sy,  0.0 ni, 71.9 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st
KiB Mem : 32740464 total, 29158440 free,   892028 used,  2689996 buff/cache
KiB Swap:  8191996 total,  8191996 free,        0 used. 31303316 avail Mem

答案1

您的问题缺少以下信息: - 最好有显示繁忙的 php 工作者数量与空闲工作者数量的图表。可以使用其嵌入式服务器统计功能从 php-fpm 本身中提取此信息 - 它是使用pm.status_path关键字配置的。 - 最好$request_time从 nginx 日志中查看平均值/典型值。组合日志格式中没有此值,因此您必须对其进行修改。

但是,根据您提供的信息,可以得出一个结论:这里的瓶颈可能是您的应用程序本身,它正在等待/阻塞某些东西。您的一些 php 工作者甚至可能处于空闲状态,您需要收集统计数据。这就是为什么增加工作者数量不会给您带来任何好处,甚至不会带来回归。您需要进一步调查是什么阻止您的应用程序处理更多请求 - 它可能是数据库(如果有)、外部 Web 请求(如果有)或代码本身。

相关内容