在阿里云上运行 Web 服务时,针对 Ubuntu Server 的系统优化可以从内核参数、网络栈、文件系统、安全加固、监控与日志等多个维度入手。以下是一套经过实践验证的优化建议(适用于通用 Web 场景,如 Nginx/Apache + PHP/Node.js/Python):
一、内核参数优化(/etc/sysctl.conf)
提升并发连接处理能力,减少延迟和丢包:
# 启用 TCP 快速打开(TFO),减少握手开销
net.ipv4.tcp_fastopen = 3
# 增加最大文件描述符数(避免 too many open files)
fs.file-max = 655350
# 调整端口范围(扩大可用 ephemeral ports)
net.ipv4.ip_local_port_range = 1024 65535
# 启用 SYN Cookie 防 DDoS
net.ipv4.tcp_syncookies = 1
# 增加 TCP 接收缓冲区大小(根据带宽调整)
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# 缩短 TIME_WAIT 时间(高频短连接场景适用)
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
# 禁用 ICMP 重定向(安全+性能)
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
# 启用 IP 转发(如需做负载均衡/NAT)
net.ipv4.ip_forward = 1
应用生效:
sudo sysctl -p
✅ 注意:若使用阿里云 SLB 或 ECS 内网通信,部分参数(如
tcp_tw_reuse)需结合业务流量特征评估是否开启。
二、文件系统与 I/O 优化
1. 挂载选项优化(/etc/fstab)
对系统盘和数据盘(尤其是 SSD)添加:
/dev/vdb1 /data ext4 defaults,noatime,nodiratime,commit=60 0 2
noatime/nodiratime:减少元数据写入,提升随机读性能commit=60:降低 fsync 频率(非关键日志可牺牲少量持久性换速度)
2. 使用 XFS(推荐云盘)
阿里云云盘默认支持 XFS,其大文件/高并发写性能更优:
mkfs.xfs -f /dev/vdb1
mount -o noatime,nodiratime /dev/vdb1 /data
3. 预分配 inode(防止小文件耗尽)
创建目录时指定合理 inode 数量(如 /var/log):
mkfs.ext4 -i 16384 /dev/vdb1
三、Web 服务器层优化(以 Nginx 为例)
1. 工作进程与连接数
worker_processes auto; # 自动匹配 CPU 核数
worker_connections 65535;
multi_accept on;
events {
use epoll; # Linux 专用高效事件模型
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
# 压缩(Gzip/Brotli)
gzip on;
gzip_types text/plain application/json application/javascript text/css;
# 缓存静态资源
location ~* .(jpg|png|css|js)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
# 限制单个 IP 请求速率(防刷)
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
}
2. 开启 HTTP/2 或 QUIC(HTTPS 场景)
listen 443 ssl http2;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
四、安全加固(基础必做)
| 项目 | 操作 |
|---|---|
| SSH 加固 | 禁止 root 登录、改用密钥认证、修改默认端口(可选)、安装 fail2ban |
| 防火墙 | 仅开放必要端口(80/443/自定义管理口),推荐使用阿里云安全组 + ufw:ufw default deny incoming, ufw allow 80/tcp, ufw enable |
| 自动更新 | 安装 unattended-upgrades 并配置每日安全补丁sudo apt install unattended-upgrades |
| 审计日志 | 启用 auditd 记录关键操作(如 passwd, useradd) |
示例 fail2ban 配置(/etc/fail2ban/jail.local):
[sshd]
enabled = true
port = ssh
maxretry = 3
bantime = 3600
findtime = 600
五、监控与日志管理
1. 轻量级监控
- 安装
htop、iotop、nethogs实时诊断 - 部署 Prometheus + Node Exporter + Grafana(生产环境推荐)
- 或使用阿里云 云监控 Agent(免费,深度集成 ECS/SLB)
2. 日志轮转优化(/etc/logrotate.d/nginx)
/var/log/nginx/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
create 0640 www-data adm
sharedscripts
postrotate
systemctl reload nginx > /dev/null 2>&1 || true
endscript
}
六、阿里云专属优化建议
| 场景 | 建议 |
|---|---|
| 高并发 Web 服务 | 选用 ecs.g7/c7(计算型)或 ecs.c8i 系列;搭配 ESSD PL1/PL2 云盘 |
| 跨可用区部署 | 使用多可用区 + SLB + RDS 主备架构保障高可用 |
| CDN 提速 | 静态资源接入 阿里云 CDN,动态请求走 WAF + API Gateway |
| 容器化部署 | 使用 ACK(Kubernetes)+ 弹性伸缩(Auto Scaling),结合 Spot 实例降本 |
| 网络优化 | 开启 增强型网卡(ENI) + SR-IOV(部分实例规格支持),提升网络吞吐 |
七、验证与压测
优化后务必进行压力测试:
# 使用 wrk 测试 Nginx
wrk -t12 -c400 -d30s http://your-domain.com/
# 检查连接状态
ss -tan | awk '{print $1}' | sort | uniq -c
观察指标:
TIME_WAIT占比是否下降drop计数(netstat -s | grep -i drop)- CPU
iowait是否异常升高
需要我针对具体技术栈(如 WordPress、Spring Boot、Go微服务)提供定制化优化方案吗?或者您希望生成一份可执行的 optimize_ubuntu.sh 脚本?
PHPWP博客