CentOS 上优化 Apache 的网络带宽
一 核心思路
二 Apache 层优化
<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>
<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>
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
三 带宽控制与下载限速
LoadModule ratelimit_module modules/mod_ratelimit.so
<Location /downloads>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 500 # 单位 KB/s,示例为 500 KB/s
</Location>
LoadModule limitipconn_module modules/mod_limitipconn.so
<Location /downloads>
MaxConnPerIP 3
NoIPLimit index.htm
</Location>
# 限制 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
四 系统与网络层优化
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
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
五 架构与部署建议