在阿里云上运行Web服务时,Ubuntu Server的系统优化建议有哪些?

在阿里云上运行 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. 轻量级监控

  • 安装 htopiotopnethogs 实时诊断
  • 部署 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 脚本?