1. 环境准备:选择与配置台湾VPS
- 选择云厂商与实例规格(CPU、内存、磁盘类型:SSD/NVMe、带宽、IOPS保证)。建议选带台湾节点且能切换磁盘类型的供应商。
- 系统建议:Ubuntu 20.04 LTS。创建实例后执行:sudo apt update && sudo apt upgrade -y。
- 基本设置:设置时区(timedatectl set-timezone Asia/Taipei)、关闭不必要服务、确保 root 或 sudo 权限、配置 SSH 密钥登录。
2. 安装必要工具与监控采集软件
- 安装fio、wrk、nginx、sysstat、iftop、iotop、htop:sudo apt install fio wrk nginx sysstat iftop iotop htop -y。
- 安装 iperf3 用于网络带宽基线测试:sudo apt install iperf3 -y。
- 启动 sar 数据采集:sudo systemctl enable --now sysstat。
3. 配置NGINX作为并发请求目标
- 编辑 /etc/nginx/sites-available/default,配置一个静态页面(如 128KB 文件)并确保 worker_processes auto,worker_connections 10240。示例:sudo fallocate -l 128k /var/www/html/testfile.bin;配置 location /testfile { root /var/www/html; }.
- 重启 nginx:sudo systemctl restart nginx。测试本机访问:curl -I http://127.0.0.1/testfile.bin。
4. 网络基线:带宽与延迟测试
- 使用 iperf3 在本地机(或另一 VPS)做双向带宽测试:iperf3 -s(服务器端)和 iperf3 -c SERVER_IP -P 10 -t 60(客户端并发流)。
- 使用 ping 或 mtr 测试到台湾节点的延迟与丢包:mtr -r -c 100 SERVER_IP。
5. 并发请求测试(使用 wrk)步骤详解
- 本地或压力机准备:推荐在另一台延迟低且带宽足够的机器上运行 wrk。
- 基础命令示例:wrk -t12 -c1000 -d60s http://SERVER_IP/testfile.bin。参数说明:-t 线程数,-c 并发连接数,-d 运行时长。
- 递进测试:先从 50 并发开始,逐步 50、100、200、500、1000,每档运行 60s,记录 Requests/sec、Latency、非 2xx 比例。每次运行前清理 nginx 缓存与重启 nginx,以确保一致性。
6. IOPS 测试(使用 fio)详细命令与参数说明
- 创建测试文件或对设备直接测试(谨慎生产磁盘):示例对文件进行随机读写:fio --name=randrw --filename=/tmp/fio_testfile --size=2G --rw=randrw --bs=4k --ioengine=libaio --direct=1 --iodepth=32 --numjobs=4 --runtime=60 --group_reporting。
- 参数说明:bs(块大小),iodepth(队列深度),numjobs(并发线程),rw(读/写类型),direct=1 跳过页缓存。
- 分别测试 randread、randwrite、write、read,测试不同 bs(4k/16k/64k)与 iodepth(1,8,32,64),记录 IOPS、带宽、延迟(latency)。
7. 结果采集与监控指标(实操)
- 在测试同时运行监控命令:iostat -x 1、vmstat 1、iotop -o -b -d 1、sar -n DEV 1 60。保存输出到文件以便后续对比。
- 关注磁盘利用率 (%util)、avgqu-sz、await、svctm、r/s、w/s。并发测试关注 TCP TIME_WAIT、socket 资源:ss -s 和 netstat -anp | grep TIME_WAIT。
8. 调优建议(系统级与应用级)
- 系统级:sysctl 调整如 net.core.somaxconn=65535、net.ipv4.tcp_tw_reuse=1、fs.file-max 提高;更改 I/O 调度器(echo noop > /sys/block/sdX/queue/scheduler 或使用 mq-deadline)。
- 应用级:nginx worker_connections 与 keepalive_timeout、调整 PHP-FPM 池大小(如适用);在需要时启用缓存(CDN、nginx proxy_cache)以降低 IOPS 压力。
9. 分析与判读:如何判断“真实表现”
- 并发瓶颈:若 wrk 的 Requests/sec 随并发上升后趋于平稳且 Latency 飙升,说明 CPU 或网络成为瓶颈;结合 iftop/iperf 判定是否网络达饱和。
- IOPS 瓶颈:fio 显示 %util 接近 100%、avg await 较高且 IOPS 无法提升,说明磁盘是限制。对比不同磁盘类型(HDD/SSD/NVMe)可量化差异。
10. 注意事项与复现性建议
- 多次运行取中位数并记录环境(时间、实例规格、并发来源 IP)。对比不同时间段与不同实例规格。
- 在生产环境测试请使用非破坏性命令或先在备份磁盘做测试,避免数据丢失。
11. 问:如何判断台湾VPS在并发请求时是受网络还是磁盘限制?
问:我在并发测试时看到延迟飙升,怎么判断是网络还是磁盘导致?
答:同时运行 wrk 和监控工具(iftop/iperf3 查看带宽利用率,iostat/iotop 查看磁盘 %util 与 await)。若网络带宽接近上限或丢包高,优先为网络瓶颈;若磁盘 %util 接近100% 且 avg await 高,说明磁盘是瓶颈。
12. 问:fio 的哪些参数对 IOPS 影响最大,如何设计测试矩阵?
问:做 IOPS 测试时我应该重点调哪些参数?怎样组合测试才全面?
答:重点是 bs(块大小)、rw 类型(randread/randwrite)、iodepth(队列深度)、numjobs(并发线程)和 direct(是否绕过缓存)。建议以 4k/16k/64k × iodepth(1,8,32,64) × randread/randwrite 为矩阵,逐项运行并记录 IOPS、latency、%util。
13. 问:我如何把测试结果写成可比报告,给同事说明台湾节点能否满足业务?
问:需要呈现报告给团队,格式和关键结论要点有哪些?
答:报告应包含测试环境(实例规格、磁盘类型)、测试工具与命令、关键图表(Requests/sec vs 并发、IOPS vs iodepth、延迟分位数)、瓶颈判定与建议(系统/应用级调优)、结论(是否满足 SLA 并发/IOPS 要求)及复现步骤和原始数据附件。
来源:性能测试台湾vps云空间在并发请求和IOPS方面的真实表现