先做基线测试,记录当前延迟和吞吐以便对比。基本命令:ping -c 10 your-server-ip,traceroute -n your-server-ip,mtr -rwc 100 your-server-ip。
测 HTTP 首字节与下载速度:curl -o /dev/null -s -w "%{time_starttransfer} %{speed_download}\n" https://yourdomain/ 或使用 wrk/ab 进行并发压力测试:wrk -t2 -c100 -d30s http://yourdomain/。
优先选择在新加坡(SG)节点且有本地 POP 的提供商,带宽与带宽质量(带宽上行、流量峰值)比单看价格更重要。
建议:选择 NVMe 存储、独立 vCPU、至少 2GB 内存(生产站点推荐 4GB+)、保证带宽或突发包,若有选择,选用更低延迟的私有网络。
编辑 /etc/sysctl.conf,添加或修改如下内容,然后 sysctl -p 应用:
net.core.somaxconn = 65535;net.core.netdev_max_backlog = 50000;net.ipv4.tcp_tw_reuse = 1;net.ipv4.tcp_fin_timeout = 30;net.ipv4.tcp_window_scaling = 1;net.ipv4.tcp_congestion_control = bbr
启用 BBR(若内核支持):echo "tcp_bbr" > /etc/modules-load.d/bbr.conf;sysctl -w net.ipv4.tcp_congestion_control=bbr。检查:sysctl net.ipv4.tcp_congestion_control && lsmod | grep bbr。
确保使用 SSD/NVMe,文件系统挂载时使用 noatime 提升读取性能:在 /etc/fstab 加上 noatime,nodiratime。
定期 fstrim:在 cron 中增加 weekly fstrim / 。对于高 IO 数据库,设置 innodb_flush_method=O_DIRECT 并合理配置 innodb_buffer_pool_size(约为内存的 60%-70%)。
nginx.conf 关键项:worker_processes auto;worker_connections 10240;keepalive_timeout 15;tcp_nopush on;tcp_nodelay on。
开启压缩与缓存:gzip on;gzip_types text/plain application/json text/css application/javascript;使用 Brotli(如果支持)。启用 HTTP/2:在 ssl_certificate 配置中加入 http2。
静态资源走 nginx 缓存:location ~* \.(js|css|png|jpg)$ { expires 30d; add_header Cache-Control "public"; }
在 php.ini/ www.conf 中开启 OPcache:opcache.enable=1; opcache.memory_consumption=128; opcache.validate_timestamps=1(上线可设为0并结合部署策略)。
PHP-FPM 池配置(www.conf):pm = dynamic;pm.max_children = 根据内存算出(例如内存/每个进程占用)pm.start_servers 等按站点流量调整。
引入 Redis/Memcached 做对象缓存、会话缓存,减轻数据库压力。示例:在应用中使用 Redis 缓存热门查询并设置合理过期。
编辑 /etc/mysql/my.cnf,调整 innodb_buffer_pool_size(内存的 60%-70%)、innodb_log_file_size、innodb_flush_log_at_trx_commit=2(可权衡稳定性与性能)。
开启慢查询日志并使用 pt-query-digest 分析慢查询,添加必要索引,避免 SELECT *,分页使用索引字段进行优化。
对静态资源使用 CDN(Cloudflare、KeyCDN 等),确保有新加坡或亚太 POP,可显著降低首字节时间和丢包带来的影响。
DNS 使用 Anycast 或地理分发的解析服务,减小解析延迟,设置合理 TTL(上线时低 TTL,稳定后提高)。需要全站加速可结合负载均衡器(HAProxy/Nginx LB 或云厂商 LB)。
开启防火墙与限速(如 fail2ban、iptables),但要针对性规则,避免过多连接检查导致 CPU 瓶颈。
使用 Web 应用防火墙(WAF)时建议在 CDN 层启用,减少源站负载。定期更新系统与软件,避免被挖矿等占用资源。
部署监控:Prometheus + Grafana、Zabbix 或云监控,关注 CPU、内存、磁盘 IO、网络带宽、连接数、响应时间。
常用即时诊断命令:htop、iostat -x 1、iotop、ss -tuanp、tcpdump -i eth0 port 80、mtr -rw yourdomain。设置阈值告警,出现异常时先查看资源占用再查看应用日志。
答:开启 BBR 在高带宽-高延迟链路上通常能提升吞吐,但前提是内核版本支持(Linux 4.9+),且云厂商网络/路由没有限制。测试前先做流量基线,启用后通过 iperf/mtr/wrk 比较。
答:建议优先迁移大体积且访问频率高的静态资源(图片、JS、CSS、视频片段)。动态页面可通过缓存策略(Edge Cache、Cache-Control)部分缓存。迁移前确保 CDN 支持 HTTPS 与缓存失效机制。
答:通过分层监控判断:若服务器 CPU/IO 空闲但响应慢,且 traceroute/mtr 显示延迟或丢包,则可能是网络;若 CPU/IO 都满或慢查询多,检查应用/数据库日志并用 slow query 与 EXPLAIN 定位;若连接数过多而 nginx worker 队列堆积,则是 Web 层瓶颈。分阶段测试(ping/traceroute → 系统监控 → 应用日志 → 数据库分析)即可定位。