Ubuntu LAMP性能调优指南
LAMP(Linux+Apache+MySQL+PHP)是经典的开源Web架构,针对Ubuntu系统的特性,性能调优需从系统基础、Apache、MySQL、PHP、缓存技术、硬件网络及监控七大维度系统化实施,以下是具体措施:
sudo apt update && sudo apt upgrade,升级操作系统内核、Apache、MySQL、PHP至最新稳定版,获取性能改进与安全补丁。apt autoremove清理无用依赖,减少系统资源占用。systemctl list-unit-files --state=enabled查看启动服务,禁用蓝牙(bluetooth.service)、Snapd(snapd.service)等非必需服务,释放内存与CPU资源。/etc/sysctl.conf,调整TCP连接参数(如net.core.somaxconn=4096提升并发连接能力)、文件描述符数量(如fs.file-max=65535增加进程可打开文件数),执行sysctl -p使配置生效。event模式(高性能异步模式),适合高并发场景;若需兼容旧应用,可选择worker模式(多进程多线程)。修改/etc/apache2/mods-enabled/mpm_event.conf(或对应模式配置文件),调整MaxRequestWorkers(最大并发请求数,根据内存计算:每进程约消耗5-10MB,如8GB内存可设为1000)、MaxConnectionsPerChild(每个子进程处理的最大请求数,防止内存泄漏,如设为10000)。/etc/apache2/apache2.conf中设置KeepAlive On,并调整KeepAliveTimeout(保持连接超时时间,如5秒)、MaxKeepAliveRequests(单次连接最大请求数,如100),减少TCP握手开销。mod_deflate模块(sudo a2enmod deflate),在配置文件中添加:<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript application/json
</IfModule>
压缩文本类内容(HTML/CSS/JS),减小传输体积(通常减少60%-70%),提升页面加载速度。a2dismod命令禁用未使用的模块(如status、autoindex),减少Apache资源消耗。EXPLAIN分析查询执行计划(重点关注type列是否为ref/range、rows列是否过大),优化慢查询。/etc/mysql/mysql.conf.d/mysqld.cnf,优化缓冲池大小(innodb_buffer_pool_size,InnoDB引擎核心参数,建议设为物理内存的50%-70%,如8GB内存设为5G)、查询缓存(query_cache_size,仅适用于读多写少场景,如设为64M)、排序缓冲区(sort_buffer_size,每个连接排序所需内存,如设为4M)。SELECT *(只查询必要字段)、减少子查询(改用JOIN)、避免LIKE '%keyword%'(无法使用索引),定期清理无用数据(如过期日志)。OPTIMIZE TABLE命令整理表碎片(针对频繁更新的表)、ANALYZE TABLE更新表统计信息(帮助优化器选择更优执行计划)。opcache扩展(sudo apt install php-opcache),编辑/etc/php/{version}/mods-available/opcache.ini,开启缓存(opcache.enable=1)、设置缓存大小(opcache.memory_consumption=128,单位MB)、调整验证频率(opcache.revalidate_freq=60,60秒检查一次脚本修改)。str_replace代替正则表达式)。Memcached或Redis作为缓存服务器,缓存数据库查询结果(如商品详情、用户会话),减少数据库访问压力。例如,安装Redis(sudo apt install redis-server),在PHP代码中使用phpredis扩展连接Redis,将热点数据存入缓存。mod_expires模块设置静态资源(图片、CSS、JS)的过期时间(如ExpiresActive On、ExpiresByType image/jpeg "access plus 1 month"),让浏览器缓存静态资源,减少重复请求。HAProxy或LVS搭建负载均衡集群,将请求分发至多台LAMP服务器,提升系统吞吐量(如支持10万+并发请求)。Netplan配置网络(如绑定多网卡提升带宽)、启用systemd-networkd管理服务(提升网络稳定性),配置DNS缓存(如dnsmasq),减少DNS解析时间。top(查看CPU/内存占用)、vmstat(查看系统整体性能)、netstat(查看网络连接)等命令实时监控服务器状态;或使用Prometheus+Grafana搭建可视化监控平台,监控Apache并发数、MySQL查询响应时间、磁盘I/O等指标。/var/log/apache2/access.log)、错误日志(/var/log/apache2/error.log)及MySQL慢查询日志(slow_query_log=1),定位性能瓶颈(如高频慢查询、异常访问IP)。df -h查看磁盘使用率,删除旧日志/var/log/)、优化数据库索引(OPTIMIZE TABLE)、更新软件版本,确保系统持续高效运行。通过以上多维度的优化措施,可显著提升Ubuntu LAMP环境的性能、稳定性及并发处理能力。需根据实际业务场景(如高并发、大数据量)调整参数,持续监控并优化。