温馨提示×

Debian上LAMP栈怎么优化

小樊
44
2025-12-06 20:52:51
栏目: 智能运维

Debian 上 LAMP 栈优化实操指南

一 基线检查与系统加固

  • 保持系统与软件为稳定版及时更新:执行 sudo apt update && sudo apt upgrade -y;为关键数据建立定期备份与可回滚方案。
  • 开启并正确配置防火墙:sudo ufw allow ‘Apache Full’;如数据库仅本机访问,限制 MySQL 端口仅 127.0.0.1
  • 强化 SSH 安全:禁用 root 远程登录、使用 SSH 密钥认证。
  • 建立监控与告警:部署如 Prometheus + Grafana 或基础工具(如 top/htop、vmstat、iostat)观察 CPU、内存、I/O、连接数 等关键指标。
  • 规划高可用:当单机已达瓶颈,考虑负载均衡与读写分离。

二 Apache 优化

  • 精简模块:仅启用必要模块,禁用无用模块(如 a2dismod 不需要的模块),减少内存与攻击面。
  • 连接与会话:启用 KeepAlive On,将 KeepAliveTimeout 设为 5 秒左右,降低握手开销同时避免占用过长连接。
  • 并发与复用:结合内存与业务并发调优 MaxRequestWorkers(旧称 MaxClients);适度提高 MaxConnectionsPerChild 以回收长期占用进程,避免内存泄漏累积。
  • 静态资源缓存:启用 mod_cache/mod_cache_disk,对图片、CSS、JS 等设置合适 Cache-Control/Expires,显著降低后端压力。
  • 压缩传输:启用 mod_deflate 对文本类内容进行 Gzip 压缩,减少带宽与时延。
  • 架构取舍:静态资源占比高或并发极大时,可用 Nginx 作为反向代理/静态资源服务器,或与 Apache 协同(如 Nginx 处理静态、Apache 处理动态)。

三 MariaDB/MySQL 优化

  • 内存核心参数:将 innodb_buffer_pool_size 设为可用内存的约 60%–75%(数据库专用场景),提升缓冲命中率;如为 MyISAM 为主可适当设置 key_buffer_size
  • 并发与资源:根据连接压力与内存调 max_connections,避免过大导致上下文切换与内存膨胀。
  • 查询与索引:用 EXPLAIN 分析慢查询,建立合适索引,避免全表扫描与临时表;定期分析与优化表结构。
  • 缓存策略:在 MySQL 5.7 及更早版本可启用 query_cache(如 query_cache_size=64M、query_cache_type=1);在 8.0+ 默认已移除,建议以应用层缓存替代。
  • 维护与扩展:定期执行维护任务(如碎片整理/优化表);高并发与大数据量场景引入 Redis/Memcached 做会话与热点数据缓存,必要时做读写分离与分库分表。

四 PHP 优化

  • 启用字节码缓存:安装并启用 OPcache(sudo apt install php-opcache;phpenmod opcache),显著提升脚本执行性能。
  • 执行与内存:按应用需求合理设置 memory_limit、max_execution_time、upload_max_filesize,避免无界增长导致 OOM 或超时。
  • 输出与缓冲:开启 output_buffering,减少小块输出引发的多次网络往返。
  • 会话与缓存:将 session.save_handler 调整为 redis/memcached,提升并发写入与横向扩展能力。
  • 扩展与连接:仅安装必要扩展,使用 持久化数据库连接(如 PDO 长连接/连接池)降低握手开销。

五 内核与网络优化

  • 文件描述符与队列:提升 fs.file-maxnet.core.somaxconn,缓解高并发下连接排队。
  • TCP 复用与回收:开启 net.ipv4.tcp_tw_reuse = 1,加速 TIME_WAIT 状态回收;结合业务与内核版本评估 tcp_tw_recycle(新内核常已移除或不建议启用)。
  • 网络缓冲:适度增大 net.core.rmem_max、net.core.wmem_max 等缓冲区,提升大流量场景吞吐。
  • 变更生效:在 /etc/sysctl.conf/etc/sysctl.d/*.conf 中写入参数后执行 sudo sysctl -p 使其生效。

0