![如何优化Nginx与PHP-FPM?](https://linux22.com/image/712071/%E5%A6%82%E4%BD%95%E4%BC%98%E5%8C%96Nginx%E4%B8%8EPHP-FPM%EF%BC%9F.png)
服务器是 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 请求(如果有)或代码本身。