1. 本文基于长期运行案例,目标是教你如何把一台柬埔寨VPS从默认配置优化为能稳定支撑高并发访问(数千到上万并发连接)的生产环境,包含选型、系统调优、服务配置、压测与监控的可执行步骤。
2. 步骤:a) 选择带有千兆公网带宽、SSD、独立IPv4,CPU至少2核、内存4GB起的VPS;b) 选择最近的物理机区域以降低延迟;c) 登录后更新系统:sudo apt update && sudo apt upgrade -y 或 yum update -y;d) 安装常用工具:sudo apt install -y vim htop iftop iproute2 curl net-tools。
3. 步骤:a) 开启大文件描述符:在/etc/security/limits.conf追加 * soft nofile 200000 和 * hard nofile 200000;b) 提升系统最大文件数:echo 200000 > /proc/sys/fs/file-max 并在/etc/sysctl.conf加入 fs.file-max=200000;c) 调整TCP参数,在/etc/sysctl.conf加入并应用(sysctl -p):net.core.somaxconn=32768, net.core.netdev_max_backlog=250000, net.ipv4.tcp_max_syn_backlog=32768, net.ipv4.tcp_tw_reuse=1, net.ipv4.ip_local_port_range=10240 65535, net.ipv4.tcp_fin_timeout=15, net.ipv4.tcp_keepalive_time=300。
4. 步骤:a) 调整内核参数后重启网络服务或机器;b) 设置TCP快速路径:echo 1 > /proc/sys/net/ipv4/tcp_low_latency(如有)并确保MTU配置为1500或根据供应商推荐;c) 开启SO_REUSEPORT支持的应用层优化(如nginx、Node.js)以利用多核;d) 使用iptables限制异常连接,示例:iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 2000 -j DROP(按需调整)。
5. 步骤:a) 安装Nginx,编辑/etc/nginx/nginx.conf,关键项:worker_processes auto; worker_rlimit_nofile 200000; events{ use epoll; worker_connections 65536; multi_accept on; }http{ sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 15; client_max_body_size 50M; server_tokens off; };b) 如果是PHP-FPM,设置pm = dynamic,pm.max_children根据内存计算,pm.max_children = (内存-系统)/每进程占用;c) 如果是Node/Go服务,使用cluster或SO_REUSEPORT绑定多进程,确保使用非阻塞IO;d) 配置缓存(fastcgi_cache / proxy_cache)与gzip压缩,静态资源尽量交给CDN。
6. 步骤:a) MySQL调整:编辑my.cnf,innodb_buffer_pool_size占可用内存的60%-70%,max_connections根据并发调,打开innodb_flush_method=O_DIRECT,query_cache_size视情况关闭或小范围使用;b) 使用连接池(应用端)如ProxySQL或直接在应用中使用连接池;c) Redis建议设置tcp-backlog、maxclients,并配置RDB/AOF策略以平衡性能与持久化;d) 将慢查询记录开启并优化索引,定期优化表(pt-online-schema-change用于线上变更)。
7. 步骤:a) 压测工具:使用wrk(示例:wrk -t12 -c5000 -d60s --latency http://IP:PORT/),或vegeta、siege,逐步提高并发;b) 监控部署:安装Prometheus+Grafana或netdata监控CPU、内存、网络、连接数、磁盘IO、应用延迟;c) 日志与告警:配置ELK或直接Prometheus Alertmanager,设置阈值告警(CPU>80%、load>核心数*2、连接数接近nofile上限);d) 自动化恢复:使用systemd配置Restart=on-failure并编写健康检查脚本,定时清理/rotate日志;e) 长期运行注意:定期检查内核升级、硬件带宽峰值、与VPS供应商沟通链路质量,必要时采用多节点+负载均衡方案。
8. 答:通常是网络带宽与TCP连接/文件描述符上限,另外I/O(磁盘)和数据库连接数也常成为瓶颈。解决办法是提升带宽或使用多节点+CDN、调整sysctl与nofile上限、优化应用连接池与缓存。
9. 答:通过压测前后比较关键指标:95/99百分位延迟、请求成功率、错误率、CPU/内存占用、系统负载(load)、established连接数以及磁盘IO等待(iowait)。若延迟下降、错误率降低且系统资源稳定,则优化生效。
10. 答:第一时间触发扩容(横向增加后端或启用备用节点)、开启或切换到更高带宽线路、启用CDN缓存静态资源、临时限制非关键接口或使用限流/降级策略,并通过监控与日志定位瓶颈持续优化。