CentOS Apache如何优化网络带宽
导读:CentOS 上优化 Apache 的网络带宽 一 核心思路 减少传输字节:开启 Gzip/deflate 压缩、设置合适的 缓存策略,让浏览器与 CDN 复用内容,直接降低带宽占用与首屏时间。 提升传输效率:启用 HTTP KeepAl...
CentOS 上优化 Apache 的网络带宽
一 核心思路
- 减少传输字节:开启 Gzip/deflate 压缩、设置合适的 缓存策略,让浏览器与 CDN 复用内容,直接降低带宽占用与首屏时间。
- 提升传输效率:启用 HTTP KeepAlive 复用连接,减少握手与慢启动开销,提高吞吐与用户体验。
- 控制带宽占用:对下载类站点或突发流量,按 IP/连接/速率 限流,避免个别用户占满带宽。
- 系统层优化:调优 TCP 内核参数 与 文件描述符,确保高并发下网络栈与进程不成为瓶颈。
- 架构层加速:引入 CDN/HTTP 加速 与 多运营商线路(三线),把静态资源与长连接卸载到边缘节点与更优链路。
二 Apache 层优化
- 启用压缩 mod_deflate(推荐)
- 启用模块:sudo yum install -y mod_deflate & & sudo systemctl restart httpd
- 推荐配置示例:
< IfModule mod_deflate.c> DeflateCompressionLevel 6 SetOutputFilter DEFLATE AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript application/xml image/svg+xml SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|zip|rar|gz|bz2)$ no-gzip dont-vary BrowserMatch ^Mozilla/4 gzip-only-text/html Header append Vary Accept-Encoding < /IfModule> - 要点:压缩级别建议 6(兼顾压缩率与 CPU);避免对 gif/jpg/png/zip/rar 等已压缩内容再压缩;设置 Vary: Accept-Encoding 以便 CDN 正确缓存压缩与非压缩版本;用浏览器开发者工具检查响应头 Content-Encoding: gzip。
- 启用浏览器缓存 mod_expires
< IfModule mod_expires.c> ExpiresActive On ExpiresByType text/html "access plus 1 month" ExpiresByType text/css "access plus 1 month" ExpiresByType application/javascript "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType image/gif "access plus 1 month" < /IfModule>- 要点:为静态资源设置较长 Cache-Control/Expires,配合 ETag/Last-Modified,显著降低重复传输。
- 优化 KeepAlive
KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 5- 要点:开启持久连接减少握手;MaxKeepAliveRequests 建议 50–100;KeepAliveTimeout 建议 5–10 秒,在高并发/内存紧张场景可适当降低,避免占用过多工作进程。
三 带宽控制与下载限速
- 按连接限速 mod_ratelimit(单连接速率上限)
LoadModule ratelimit_module modules/mod_ratelimit.so < Location /downloads> SetOutputFilter RATE_LIMIT SetEnv rate-limit 500 # 单位 KB/s,示例为 500 KB/s < /Location>- 要点:适合限制单个下载连接的带宽,防止单用户长时间占满带宽;对 多线程下载器 效果有限。
- 按 IP 并发连接数 mod_limitipconn(减少并发占用)
LoadModule limitipconn_module modules/mod_limitipconn.so < Location /downloads> MaxConnPerIP 3 NoIPLimit index.htm < /Location>- 要点:限制同一 IP 的并发连接数,配合速率限制,能有效抑制“抢带宽”的下载行为。
- 全局带宽整形 tc(系统层令牌桶)
# 限制 eth0 出口总带宽为 50 Mbps sudo tc qdisc add dev eth0 root tbf rate 50mbit burst 32kbit latency 400ms # 查看 tc qdisc show dev eth0 # 删除 sudo tc qdisc del dev eth0 root- 要点:当需保障整体带宽分配(例如给管理口或其他服务预留带宽)时使用;对突发流量进行整形。
四 系统与网络层优化
- 文件描述符与进程限制
- /etc/security/limits.conf
* soft nofile 65535 * hard nofile 65535 * soft nproc 65535 * hard nproc 65535 - 使服务与登录会话生效,必要时在 systemd 服务单元中设置 LimitNOFILE=65535。
- /etc/security/limits.conf
- TCP 内核参数 /etc/sysctl.conf(按带宽与并发适度调整)
net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.ip_local_port_range = 10000 65000 net.ipv4.tcp_max_syn_backlog = 8192 net.ipv4.tcp_max_tw_buckets = 5000 net.ipv4.tcp_syncookies = 1 vm.swappiness = 10- 使配置生效:sudo sysctl -p
- 要点:增大 收发缓冲区 与 端口范围,开启 TIME_WAIT 重用 与 SYN Cookie,提升高并发下的连接处理能力。
- 监控与排障
- 带宽与连接:nload、iftop、nethogs
- 系统资源:top、vmstat、iostat
- 建议基线采集与压测结合,逐步调参,避免一次性大幅变更。
五 架构与部署建议
- 使用 CDN 分发静态资源,开启 gzip/Brotli 与 Vary: Accept-Encoding,让边缘节点承担带宽与压缩成本。
- 启用 HTTP/2(多路复用、头部压缩),减少队头阻塞与连接开销,提升页面并发加载体验。
- 采用 多运营商线路(三线) 与就近接入,优化跨网访问时延与稳定性。
- 对动态内容启用 OPcache(PHP)与页面/对象缓存,降低后端计算与数据库压力,间接释放带宽。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Apache如何优化网络带宽
本文地址: https://pptw.com/jishu/756828.html
