通过调整内核参数提升系统的网络、内存和文件系统性能。关键参数包括:
/etc/sysctl.conf,设置net.ipv4.tcp_tw_reuse=1(重用TIME_WAIT连接)、net.ipv4.tcp_fin_timeout=30(缩短TIME_WAIT超时)、net.core.somaxconn=1024(增加最大连接队列长度);vm.swappiness=10(降低系统使用交换空间的倾向,优先使用物理内存)、vm.dirty_ratio=10(控制脏页写入磁盘的阈值);fs.file-max=65536(增加系统最大文件描述符数)。修改后执行sysctl -p使配置生效。noatime(不记录文件访问时间)、nodiratime(不记录目录访问时间)挂载选项,减少磁盘I/O开销,例如:mount -o noatime,nodiratime /dev/sda1 /mnt。systemctl stop firewalld && systemctl disable firewalld(若无需防火墙)、systemctl disable postfix(若无需邮件服务)等命令,释放系统资源;systemctl list-unit-files --state=enabled查看并禁用非必需的开机服务。prefork(适合处理静态内容,多进程模型,稳定性高)、worker/event(适合高并发动态内容,多线程模型,性能更好)。修改/etc/httpd/conf.modules.d/00-mpm.conf(CentOS)或/etc/apache2/mods-enabled/mpm_*.conf(Ubuntu);event模式为例,设置StartServers 5(启动时的进程数)、MinSpareThreads 50(最小空闲线程数)、MaxSpareThreads 250(最大空闲线程数)、MaxRequestWorkers 150(最大并发请求数)、MaxConnectionsPerChild 1000(每个子进程处理的最大请求数,避免内存泄漏)。mod_expires模块,设置缓存时间(如CSS/JS缓存1年、图片缓存1个月),减少重复请求:<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"
</IfModule>
mod_deflate模块压缩文本类内容(HTML/CSS/JS),减小传输体积:<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript
</IfModule>
```。
KeepAlive On(开启持久连接)、MaxKeepAliveRequests 100(单个连接最大请求数)、KeepAliveTimeout 5(连接超时时间),减少TCP连接建立/关闭的开销;warn(仅记录警告和错误),避免记录过多详细信息占用磁盘空间:LogLevel warn。WHERE、JOIN、ORDER BY子句中的字段创建索引(如ALTER TABLE users ADD INDEX idx_username (username)),避免全表扫描;EXPLAIN分析查询执行计划(关注type列是否为ref/range、key列是否命中索引),避免SELECT *(只查询需要的列)、子查询(用JOIN替代)、LIKE '%keyword%'(左模糊查询无法使用索引);WHERE YEAR(create_time) = 2023)、遵循最左前缀原则(联合索引idx_a_b需按a、b顺序使用)。innodb_buffer_pool_size为物理内存的50%-75%(如8GB内存设置为4GB-6GB),缓存数据和索引,提高查询性能;max_connections为合理值(如100-200),避免过多连接导致内存耗尽;slow_query_log=1、long_query_time=1(超过1秒的查询记录),定期分析慢查询日志优化性能。ANALYZE TABLE更新表统计信息(优化查询优化器决策)、OPTIMIZE TABLE整理表碎片(回收空间,提高查询速度);user_001、user_002),解决单表数据量过大问题。php.ini:opcache.enable=1、opcache.memory_consumption=128(缓存内存大小,单位MB)、opcache.max_accelerated_files=4000(最大缓存文件数)、opcache.revalidate_freq=60(缓存验证频率,单位秒);memory_limit(如256M或512M),避免脚本因内存不足终止;display_errors=Off(生产环境),避免暴露敏感信息。INSERT INTO ... VALUES (...), (...), ...替代单条插入)、避免SELECT *;PDO或mysqli的连接池功能,避免频繁创建/销毁数据库连接(连接创建是高开销操作);ob_start('ob_gzhandler')或mod_deflate压缩PHP输出,减小传输体积。session.save_handler = redis、session.save_path = "tcp://127.0.0.1:6379";proxy_cache模块,缓存整个页面,直接返回给客户端。query_cache_type=1(开启查询缓存)、query_cache_size=64M(缓存大小),缓存SELECT查询结果(注意:写密集型应用慎用,查询缓存会导致写操作性能下降)。top(查看CPU/内存使用率)、vmstat(查看系统整体性能)、iostat(查看磁盘I/O)、netstat(查看网络连接)监控服务器状态;access_log(查看访问量、响应时间)、MySQL的slow_query_log(查看慢查询),找出性能瓶颈;ab(Apache Benchmark)、sysbench(数据库基准测试)模拟高并发场景,验证优化效果(如测试Apache的并发处理能力:ab -n 1000 -c 100 http://example.com/)。优化是一个迭代过程,需根据实际负载(如访问量、数据量)和业务需求调整配置,定期监控并优化,才能保持LAMP服务器的高性能。