OPcache是PHP内置的字节码缓存扩展,可避免重复编译脚本,显著提升执行效率。
sudo yum install php-opcache安装(适用于CentOS默认仓库)。/etc/php.ini,添加以下核心参数:[opcache]
zend_extension=opcache.so # 启用扩展
opcache.enable=1 # 开启OPcache
opcache.enable_cli=0 # CLI模式下关闭(节省内存)
opcache.memory_consumption=128 # 共享内存大小(MB,根据服务器内存调整)
opcache.interned_strings_buffer=8 # 内部字符串缓存大小
opcache.max_accelerated_files=4000 # 缓存的脚本文件数量(需覆盖项目文件数)
opcache.revalidate_freq=60 # 文件修改后重新验证的间隔(秒)
opcache.fast_shutdown=1 # 快速关闭(减少内存释放时间)
sudo systemctl restart php-fpm)。PHP-FPM(FastCGI进程管理器)是CentOS下PHP的高效处理方式,合理配置进程池能平衡性能与资源占用。
/etc/php-fpm.d/www.conf(默认路径),调整以下参数:[www]
pm = dynamic # 动态进程管理模式(推荐)
pm.max_children = 50 # 最大子进程数(计算公式:(可用内存 - 1G)/单个进程内存,如2G内存约设30-40)
pm.start_servers = 5 # 启动时的子进程数
pm.min_spare_servers = 5 # 最小空闲进程数(避免频繁创建)
pm.max_spare_servers = 35 # 最大空闲进程数(避免资源浪费)
pm.max_requests = 500 # 每个子进程处理的最大请求数(防止内存泄漏)
sudo systemctl restart php-fpm)。优化PHP基础参数,适配应用需求与服务器资源。
/etc/php.ini:memory_limit = 256M # 脚本最大内存(根据应用调整,如大型项目可设512M)
max_execution_time = 300 # 脚本最大执行时间(秒,默认30,大型任务需延长)
upload_max_filesize = 50M # 单个文件上传大小(根据需求调整)
post_max_size = 50M # POST请求最大大小(需大于upload_max_filesize)
display_errors = Off # 生产环境关闭(避免泄露敏感信息)
log_errors = On # 开启错误日志
error_log = /var/log/php_errors.log # 日志路径
缓存数据库查询、会话数据等高频访问内容,减少数据库压力。
sudo yum install redis php-pecl-redis。sudo systemctl start redis && sudo systemctl enable redis。/etc/php.ini,添加extension=redis.so。$redis->set('key', 'value', 3600))。sudo yum install memcached php-pecl-memcached。sudo systemctl start memcached && sudo systemctl enable memcached。/etc/php.ini,添加extension=memcached.so。/etc/php.ini:session.save_handler = redis # 或memcached
session.save_path = "tcp://127.0.0.1:6379" # Redis地址
确保Web服务器与PHP-FPM高效协作,减少传输延迟。
/etc/nginx/nginx.conf,调整进程与连接数:worker_processes auto; # 根据CPU核心数自动设置
events {
worker_connections 1024; # 每个进程的最大连接数
use epoll; # 高性能事件模型(Linux推荐)
}
http {
gzip on; # 开启Gzip压缩(减少传输体积)
gzip_types text/plain text/css application/json application/javascript;
fastcgi_buffers 256 16k; # PHP-FPM缓冲区设置
fastcgi_buffer_size 128k;
}
/etc/nginx/conf.d/your-site.conf):location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock; # 与PHP-FPM通信方式(Unix socket更高效)
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
mod_proxy_fcgi与mod_rewrite模块:sudo a2enmod proxy_fcgi rewrite。/etc/httpd/conf.d/your-site.conf):<FilesMatch \.php$>
SetHandler "proxy:fcgi://unix:/run/php-fpm/www.sock"
</FilesMatch>
sudo systemctl restart nginx或sudo systemctl restart httpd)。通过工具监控性能瓶颈,针对性调整配置。
top(查看CPU/内存占用)、htop(更直观的资源监控)、vmstat 1(系统级性能指标,如上下文切换次数)。/etc/php-fpm.d/www.conf中开启pm.status_path = /status,通过Nginx配置访问(如location /status { fastcgi_pass unix:/run/php-fpm/www.sock; include fastcgi_params; }),查看进程状态。/var/log/php_errors.log(PHP错误日志)、/var/log/php-fpm/error.log(PHP-FPM错误日志),定位异常。/etc/php.ini中设置disable_functions = exec,passthru,shell_exec,system,防止恶意代码执行。wait_timeout调整)减少连接开销。