对于你的配置(1核心2GB RAM的VPS),我来给你一些针对Apache mod_php的优化建议:
编辑 /etc/php/8.1/apache2/php.ini(版本号可能不同):
; 内存限制 - 对于单个脚本,128M通常足够
memory_limit = 128M
; 执行时间限制
max_execution_time = 30
max_input_time = 30
; 文件上传限制(适合邮件附件)
upload_max_filesize = 10M
post_max_size = 12M
max_file_uploads = 20
; 会话配置
session.gc_maxlifetime = 3600
session.gc_probability = 1
session.gc_divisor = 100
; OPcache启用(重要优化)
opcache.enable = 1
opcache.enable_cli = 0
opcache.memory_consumption = 64
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 2000
opcache.revalidate_freq = 60
opcache.fast_shutdown = 1
编辑 /etc/apache2/apache2.conf,调整mpm_prefork模块:
<IfModule mpm_prefork_module>
StartServers 2
MinSpareServers 2
MaxSpareServers 5
MaxRequestWorkers 20
MaxConnectionsPerChild 1000
</IfModule>
sudo a2enmod deflate
sudo a2enmod expires
sudo a2enmod headers
sudo a2enmod rewrite
在虚拟主机配置中添加:
# 启用压缩
<Location />
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \
\.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
</Location>
# 静态文件缓存
<FilesMatch "\.(css|js|png|jpg|jpeg|gif|ico|svg)$">
ExpiresActive On
ExpiresDefault "access plus 1 month"
Header append Cache-Control "public"
</FilesMatch>
# PHP文件不缓存
<FilesMatch "\.php$">
ExpiresActive Off
Header set Cache-Control "no-cache, no-store, must-revalidate"
</FilesMatch>
编辑 /etc/mysql/mysql.conf.d/mysqld.cnf:
[mysqld]
# 基础内存设置(约25%的系统内存)
innodb_buffer_pool_size = 512M
key_buffer_size = 64M
max_connections = 50
thread_cache_size = 8
# 临时表设置
tmp_table_size = 64M
max_heap_table_size = 64M
# 日志设置
slow_query_log = 1
long_query_time = 2
创建 /etc/sysctl.d/99-mysql.conf:
# 减少swap使用
vm.swappiness = 10
# 网络优化
net.core.rmem_default = 262144
net.core.rmem_max = 16777216
net.core.wmem_default = 262144
net.core.wmem_max = 16777216
# 重启服务
sudo systemctl restart apache2
sudo systemctl restart mysql
sudo sysctl -p /etc/sysctl.d/99-mysql.conf
# 验证配置
php -m | grep -i opcache
apache2ctl configtest
安装htop监控资源使用:
sudo apt install htop
这些优化主要针对你的硬件限制,重点是减少内存使用、启用OPcache加速PHP执行,以及合理配置Apache进程数量。记得在修改配置后备份原文件,并逐步测试这些更改的效果。