首页主机资讯如何优化Ubuntu Apache的磁盘I/O

如何优化Ubuntu Apache的磁盘I/O

时间2025-12-09 13:25:04发布访客分类主机资讯浏览538
导读:Ubuntu 上优化 Apache 磁盘 I/O 的实用方案 一 系统层优化 使用 SSD 承载 /var/www 与 /var/log/apache2,并优先选择 ext4 或 XFS 等现代文件系统;在 /etc/fstab 中为数据...

Ubuntu 上优化 Apache 磁盘 I/O 的实用方案

一 系统层优化

  • 使用 SSD 承载 /var/www/var/log/apache2,并优先选择 ext4XFS 等现代文件系统;在 /etc/fstab 中为数据盘启用 noatime(必要时加 nodiratime)以减少元数据写入:
    • 示例:/dev/sda1 /var/www ext4 defaults,noatime,nodiratime 0 2
    • 示例:/dev/sdb1 /var/log/apache2 ext4 defaults,noatime,nodiratime 0 2
  • 选择合适的 I/O 调度器:SSD 更适合 noop/deadline,机械盘可用 deadline/cfq。运行时可临时切换:
    • echo deadline | sudo tee /sys/block/sdX/queue/scheduler
  • 适度增大 脏页写回阈值,减少频繁小写入(示例为 5 秒,请结合业务与数据安全性评估):
    • echo 5000 | sudo tee /proc/sys/vm/dirty_writeback_centisecs
  • 预留足够的 文件描述符 上限,避免 “Too many open files”:
    • /etc/security/limits.conf 增加:* soft nofile 65535;* hard nofile 65535
  • 监控与定位:用 iostat -x 1iotop 观察 await、r/s、w/s、util% 等指标,确认瓶颈后再细化调优。

二 Apache 配置优化

  • 启用与调整 HTTP Keep-Alive,复用连接以降低握手与日志、文件打开/关闭次数:
    • KeepAlive On
    • MaxKeepAliveRequests 100
    • KeepAliveTimeout 5
  • 优化静态文件传输与内核旁路:
    • EnableSendfile On(内核零拷贝发送文件)
    • EnableMMAP Off(避免某些场景下的双重缓冲;若文件较小或随机访问较多,可改为 On 实测对比)
  • 合理设置 缓冲区日志,减少磁盘操作频次:
    • BufferSize 8192(按业务与并发实测微调)
    • LogLevel warn(非必要时避免 info/debug)
    • 使用 rotatelogs 按天切分日志,控制单日志体积:
      • CustomLog “|/usr/sbin/rotatelogs /var/log/apache2/access_log.%Y-%m-%d 86400” combined
  • 启用 压缩缓存,降低传输与后端磁盘/数据库压力:
    • a2enmod deflate;对 text/html、text/css、application/javascript 等启用压缩
    • a2enmod cache;按需配置 CacheEnable disk / 与过期时间,缓存可命中内容减少磁盘读

三 MPM 选择与并发调优

  • 按应用特性选择 MPM
    • prefork:兼容性好(如非线程安全模块/PHP),但内存占用高
    • worker/event:更高并发、更低内存占用;高并发优先 event
  • 典型并发参数示例(需结合内存与压测微调):
    • prefork:
      • StartServers 5;MinSpareServers 5;MaxSpareServers 10
      • MaxRequestWorkers 150(由内存与单进程占用决定)
      • MaxConnectionsPerChild 1000(防内存泄漏累积)
    • event:
      • StartServers 5;MinSpareServers 5;MaxSpareServers 10
      • MaxRequestWorkers 1000(依据内存与后端能力)
      • MaxConnectionsPerChild 1000
  • 切换 MPM 与生效:编辑 /etc/apache2/mods-enabled/mpm.conf(或相应 MPM 配置文件),然后执行:
    • sudo systemctl restart apache2

四 验证与持续监控

  • 基准与压测:使用 ab/siege 对关键页面做压测,观察 TPS、响应时间、错误率 的变化,验证优化成效。
  • 运行时观测:
    • iostat -x 1(关注 await、r/s、w/s、util%;util 持续接近 100% 多为磁盘瓶颈)
    • iotop(定位具体进程的磁盘读写)
  • 日志与缓存命中:观察 access.log 增长速率、缓存命中率与后端数据库/存储压力是否下降,必要时继续微调 KeepAlive、缓存策略、MPM 并发

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何优化Ubuntu Apache的磁盘I/O
本文地址: https://pptw.com/jishu/767043.html
Ubuntu Apache配置中如何设置防盗刷 Ubuntu Apache配置中如何调整线程数

游客 回复需填写必要信息