一、PHP-FPM 完整配置文件(PHP 7.1)
适配 8G 内存服务器,直接替换
/www/server/php/71/etc/php-fpm.d/www.conf(宝塔面板路径),替换前先备份原文件:cp /www/server/php/71/etc/php-fpm.d/www.conf /www/server/php/71/etc/php-fpm.d/www.conf.bak
ini
[www]
user = www
group = www
listen = /tmp/php-cgi-71.sock
listen.owner = www
listen.group = www
listen.mode = 0666
pm = dynamic
pm.max_children = 30
pm.start_servers = 8
pm.min_spare_servers = 4
pm.max_spare_servers = 12
pm.max_requests = 2000
pm.process_idle_timeout = 10s
request_terminate_timeout = 60
request_slowlog_timeout = 30
slowlog = /www/server/php/71/var/log/slow.log
php_admin_value[error_log] = /www/server/php/71/var/log/error.log
php_admin_flag[log_errors] = on
php_value[memory_limit] = 256M
php_value[post_max_size] = 50M
php_value[upload_max_filesize] = 50M
php_value[max_execution_time] = 60
php_value[max_input_time] = 60
php_value[max_input_vars] = 1000
php_value[session.save_path] = /tmp
php_value[session.gc_maxlifetime] = 1440
php_value[short_open_tag] = On
php_value[date.timezone] = Asia/Shanghai

二、MySQL 5.7.4 完整配置文件
替换
/etc/my.cnf(宝塔面板路径),备份原文件:cp /etc/my.cnf /etc/my.cnf.bak
ini
[mysqld]
server-id = 1
port = 3306
user = mysql
datadir = /www/server/data
socket = /tmp/mysql.sock
pid-file = /www/server/data/mysql.pid
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect = 'SET NAMES utf8mb4'
skip-name-resolve = 1
max_connections = 1000
max_connect_errors = 100000
table_open_cache = 1024
table_definition_cache = 1024
# 核心内存限制(8G内存适配)
innodb_buffer_pool_size = 2G
innodb_buffer_pool_instances = 2
innodb_log_file_size = 512M
innodb_log_buffer_size = 64M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
# 临时表/堆表限制(防内存暴涨)
tmp_table_size = 64M
max_heap_table_size = 64M
# 关闭查询缓存(MySQL5.7已废弃,开了反而占内存)
query_cache_type = 0
query_cache_size = 0
# 其他优化
sort_buffer_size = 2M
join_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 4M
binlog_cache_size = 1M
max_allowed_packet = 500M
interactive_timeout = 28800
wait_timeout = 28800
lower_case_table_names = 1
log_bin = mysql-bin
binlog_format = mixed
expire_logs_days = 7
slow_query_log = 1
slow_query_log_file = /www/server/data/mysql-slow.log
long_query_time = 1
log_queries_not_using_indexes = 0

三、Nginx 1.28 核心优化配置(补充)
编辑
/etc/nginx/nginx.conf,重点优化 worker 进程和连接数:
nginx
user www www;
worker_processes auto; # 自动匹配CPU核心数
worker_cpu_affinity auto;
worker_rlimit_nofile 65535;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
use epoll;
worker_connections 1024;
multi_accept on;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
client_max_body_size 50M; # 匹配PHP上传限制
# 开启gzip压缩,减少传输量
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
gzip_vary on;
include /etc/nginx/conf.d/*.conf;
}

四、配置生效步骤
bash
# 重启PHP-FPM 7.1
systemctl restart php-fpm-71
# 重启MySQL 5.7
systemctl restart mysqld
# 重启Nginx 1.28
systemctl restart nginx
# 验证服务是否正常启动
systemctl status php-fpm-71
systemctl status mysqld
systemctl status nginx
总结
- PHP-FPM 核心:限制最大进程数(30)+ 进程自动重启(2000请求)+ 单脚本内存(256M),从源头防内存泄漏/暴增;
- MySQL 核心:InnoDB缓冲池限制2G(8G内存50%)+ 关闭查询缓存 + 限制临时表大小,避免内存膨胀;
- 系统兜底:提前配置2G Swap + 内存过度分配保护,即使突发峰值也不会直接OOM杀进程。
8G内存的CentOS服务器可彻底解决不定时OOM问题,同时保证业务性能。