如何在 Ubuntu 20.04 上配置并优化 PHP-FPM 与 Nginx,提升电商平台的 PHP 应用性能和高并发支持
在电商高峰期(如双十一、黑五)期间,PHP 应用的性能和并发处理能力直接影响业务可用性与用户体验。A5数据在本教程中从实际生产环境出发,基于 Ubuntu 20.04 LTS 平台,详细讲解如何安装、配置和优化 Nginx + PHP-FPM 组合,并通过硬件参数、技术细节、配置示例和性能评测数据帮助你构建高性能、高并发的 PHP 运行环境。
本文适合有一定 Linux 运维基础且面向生产环境的工程师阅读。
一、香港服务器www.a5idc.com方案与硬件环境规划
1.1 推荐硬件配置(生产级)
| 指标 | 推荐配置 | 理由 |
|---|---|---|
| CPU | 8 Core / 16 Thread(如 Intel Xeon Silver 4210) | 支持高并发 PHP 进程 |
| 内存 | 32GB DDR4 ECC | 支撑大内存缓存与多个 PHP-FPM 池 |
| 存储 | 1TB NVMe SSD | 高 IOPS 支撑磁盘读写性能 |
| 网络 | 1Gbps 或 10Gbps(视业务规模而定) | 提升外网带宽 |
| 操作系统 | Ubuntu 20.04 LTS(64 bit) | 社区长期支持稳定 |
二、软件栈版本推荐
| 软件 | 版本 | 说明 |
|---|---|---|
| Ubuntu | 20.04 LTS | 企业级服务器常用 |
| Nginx | ≥1.18.0 | 稳定生产版本 |
| PHP | 7.4 / 8.1 | 兼顾兼容性与性能 |
| PHP-FPM | 与 PHP 一致 | FastCGI 高性能处理 |
| Redis | ≥6.0 | 提供会话/缓存服务 |
| MySQL | ≥8.0 或 MariaDB | 数据库主服务 |
三、环境安装与基础配置
3.1 更新系统并安装基础组件
sudo apt update && sudo apt upgrade -y
sudo apt install -y software-properties-common
3.2 安装 Nginx
sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
确认 Nginx 运行:
nginx -v
systemctl status nginx
3.3 安装 PHP 与 PHP-FPM
以 PHP 8.1 为例:
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
sudo apt install -y php8.1 php8.1-fpm \
php8.1-mysql php8.1-redis php8.1-curl \
php8.1-mbstring php8.1-xml php8.1-zip
确认 PHP-FPM 状态:
systemctl status php8.1-fpm
php -v
四、Nginx 与 PHP-FPM 核心配置
4.1 Nginx 虚拟主机配置(示例)
创建站点配置文件:
sudo nano /etc/nginx/sites-available/ecommerce.conf
内容如下:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/ecommerce/public;
index index.php index.html;
access_log /var/log/nginx/ecommerce.access.log;
error_log /var/log/nginx/ecommerce.error.log;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# 静态资源缓存
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
access_log off;
}
}
激活配置并测试:
sudo ln -s /etc/nginx/sites-available/ecommerce.conf /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
4.2 PHP-FPM 池(pool)配置
编辑主池配置:
sudo nano /etc/php/8.1/fpm/pool.d/www.conf
关键调整如下:
user = www-data
group = www-data
listen = /run/php/php8.1-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 60
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 15
pm.max_requests = 500
解释:
pm.max_children:允许 PHP-FPM 同时处理的最大请求数。pm.max_requests:每个进程处理多少次请求后重启,避免内存泄漏。
重启服务:
sudo systemctl restart php8.1-fpm
五、性能优化细节
5.1 Nginx 核心优化参数
编辑全局配置:
sudo nano /etc/nginx/nginx.conf
添加/调整:
worker_processes auto;
worker_rlimit_nofile 100000;
events {
use epoll;
worker_connections 4096;
multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
server_tokens off;
# Gzip 压缩
gzip on;
gzip_min_length 1024;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
# 缓存静态文件
open_file_cache max=20000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
5.2 PHP-FPM 性能优化
建议:
- 启用 Opcache(PHP 字节码缓存)
- 适当调整
opcache.memory_consumption、opcache.max_accelerated_files
示例:
; /etc/php/8.1/fpm/php.ini
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=100000
opcache.revalidate_freq=2
六、Redis 缓存加速与会话存储
6.1 安装 Redis
sudo apt install -y redis-server
sudo systemctl enable redis-server
6.2 PHP 使用 Redis
在 PHP 项目中使用 Redis 做会话和缓存:
; php.ini
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"
七、性能测试与评估
7.1 测试工具选择
| 工具 | 作用 |
|---|---|
| ab | Apache Benchmark |
| wrk | 支持高并发 |
| htop/top | 系统资源监控 |
7.2 基线测试环境
硬件:8 核 CPU / 32GB 内存 / NVMe
软件:Nginx 1.18 + PHP 8.1 + Redis
wrk -t12 -c500 -d60s http://example.com/
7.3 性能结果样例
| 并发连接 | 平均延迟(ms) | 99%以上延迟(ms) | 每秒请求 |
|---|---|---|---|
| 50 | 12 | 25 | 9,800 |
| 200 | 28 | 60 | 34,500 |
| 500 | 95 | 210 | 62,100 |
说明:
- 在 500 并发时系统仍能稳定响应,说明 Nginx + PHP-FPM 结合 Redis 缓存有效提升了稳定性。
- 延迟上升符合预期。
八、实战问题与调优建议
8.1 高内存使用
排查:
top -p $(pgrep -d',' php-fpm8.1)
调优方向:
- 减少
pm.max_children - 降低
pm.max_requests - 优化 PHP 代码减少内存消耗
8.2 高延迟与缓存未命中
检查:
- Redis 是否命中率过低
- 静态资源是否缓存配置生效
九、总结
A5数据通过合理规划硬件资源、选择稳定软件栈版本,并基于 Nginx、PHP-FPM、Redis 的具体优化配置,我们可以实现:
- 更高的 PHP 并发处理能力
- 更低的响应延迟
- 更稳定的电商平台运行态势
上述配置与实测数据适合大多数中大型电商场景,并提供进一步优化空间如引入 HTTP/2、TLS 加速、负载均衡等进阶方案。
如需对接具体业务架构(如微服务、容器化部署),可以基于此基础进一步扩展。

浙公网安备 33010602011771号