1. 概述与目标
本段说明压测目标与约束。小分段:明确目标(如吞吐、并发、延迟阈值);明确免费期限制(配额、带宽、使用天数);列出最终交付物(测试脚本、结果图、资源使用报告)。举例:目标为在香港机房对一个静态网站进行1分钟1000并发的稳定性验证,并记录p50/p95/p99延迟与CPU、网卡饱和情况。
2. 准备工作与权限核对
小分段:注册云厂商并申请香港地域免费试用,确认免费实例类型与公网带宽;绑定手机/身份证完成实名认证以避免账号被降配;在控制台查看配额(CPU、内存、弹性公网IP数量、磁盘)。务必在控制台设置计费告警和自动停机策略(避免超额扣费)。
3. 创建香港实例(实例规格、镜像与网络)
小分段:选择镜像(推荐Ubuntu 22.04 LTS),选择免费试用允许的最接近实例规格(例如1 vCPU 1GB);选择香港(HK)可用区;创建安全组,放行SSH(22)、HTTP(80/8080)和测试端口;申请弹性公网IP并绑定到实例。示例操作:控制台->实例->创建->选择镜像->网络->安全组新建规则->分配公网IP。
4. SSH登录与基础配置
小分段:使用密钥或密码登录:ssh ubuntu@公网IP;首次登录执行系统更新:sudo apt update && sudo apt -y upgrade;设置时区为香港:sudo timedatectl set-timezone Asia/Hong_Kong;关闭不必要服务,设置swap(若需要)并记录内存信息:free -h;建议创建一个非root测试用户并加入sudo组。
5. 部署被测应用(示例:Nginx 静态站点)
小分段:安装并配置Nginx:sudo apt install -y nginx;将测试页面放到/var/www/html/index.html;配置server监听80端口并重启:sudo systemctl restart nginx;验证本地curl:curl -sS http://127.0.0.1 | head;确保安全组与防火墙开放80端口。
6. 安装压测工具:wrk、ab、siege、JMeter
小分段:安装ApacheBench:sudo apt install -y apache2-utils;安装wrk(编译):sudo apt install -y build-essential libssl-dev git; git clone https://github.com/wg/wrk.git && cd wrk && make && sudo cp wrk /usr/local/bin/;安装siege:sudo apt install -y siege;如需JMeter,下载二进制包并解压到~/jmeter,使用GUI在本地机器设计脚本并通过非GUI模式(jmeter -n -t test.jmx -l result.jtl)在压测机上运行。
7. 设计测试方案(场景、流量曲线、指标)
小分段:定义场景:平稳负载(稳定并发N分钟)、阶梯爬升(逐步增加并发到峰值)、压力极限(直到错误率上升);定义指标:吞吐(req/s)、延迟p50/p95/p99、错误率、CPU/Memory/Disk IO/Network利用率;计划三次复现测试并记录环境和时间。
8. 在压测机上准备并发生成器(本地或云端)
小分段:若云商免费期只给单台实例,考虑使用多线程工具如wrk或使用多台轻量实例作为压测客户端;在本地或另一香港节点部署wrk并确认从压测机到被测机网络延迟:ping 公网IP;若延迟高影响结果,优选同地域压测机。
9. 运行基线测试命令示例
小分段:使用wrk做基线:wrk -t4 -c200 -d60s --latency http://被测IP/;解释参数:-t线程数 -c并发连接数 -d持续时间;使用ab进行瞬时压力:ab -n 50000 -c 500 http://被测IP/;记录输出中的Requests per second、Time per request和Failed requests。
10. 监控被测实例(实时采集命令)
小分段:系统级监控:top 或 htop;CPU与I/O:sar -u 1 60(需要sudo apt install sysstat并启用),iostat -x 1 60;网络监控:iftop(sudo apt install iftop)、ss -s查看连接数;磁盘IO监控:iotop(sudo apt install iotop);推荐同时启用cloud监控或安装Netdata进行可视化:bash <(curl -Ss https://my-netdata.io/kickstart.sh)。
11. 收集压测数据与日志(建议的文件与采集频率)
小分段:压测输出保存到文件(wrk --latency > wrk_out.txt);系统指标按秒或按5秒采集(sar -u 5 > sar_cpu.log &);nginx访问日志和error_log路径/var/log/nginx/,压测期间开启更高日志级别;将所有文件打包:tar czf results_$(date +%F).tgz wrk_out.txt sar_cpu.log nginx*.log。
12. 分析性能结果的要点与方法
小分段:先看错误率和请求吞吐,若错误高优先解决应用或连接限制;对比p50与p95差距评估抖动;结合sar/iostat判断是否为CPU瓶颈(CPU长时间100%)、还是IO或网络瓶颈(iowait高或ifstat速率达到带宽上限);使用图表(Excel或Grafana)绘制吞吐/延迟/CPU随时间变化。
13. 优化建议(常见瓶颈与调优命令)
小分段:若CPU瓶颈:优化应用代码、提高实例规格或使用Nginx缓存;若连接数受限:调整ulimit(ulimit -n 65536)、sysctl参数(net.core.somaxconn等);若磁盘瓶颈:使用更快磁盘或增加缓存;若网络瓶颈:选择更大带宽实例或增加CDN。修改sysctl示例:sudo sysctl -w net.core.somaxconn=65535。
14. 清理与避免超额扣费的步骤
小分段:压测完成立即停止实例或删除不再需要的弹性公网IP和磁盘快照;在控制台删除实例并确认计费项为零;删除安全组和负载均衡器;如有自动备份策略,临时禁用。示例命令(如果使用CLI):云CLI删除实例:cloud-cli instance delete
。
15. 注意事项与合规性(避免影响他人)
小分段:不要对非自有或未经授权的目标压测,遵循云商和法律规定;在免费期内避免长期高并发造成封号风险,分阶段运行并设置短时试验;对外网压测要考虑ISP带宽限制及峰值流量限制。
16. 常见问题Q1:免费期实例能否支撑高并发压测?
小分段:回答:免费期实例通常规格有限(CPU/内存/带宽),适合进行小规模功能性或基线压测,但做大规模并发压测容易触及资源上限或被限流。建议通过分布式压测(多台轻量客户端)或把压测目标降到免费配额内获得有意义的数据。
17. 常见问题Q2:如何在免费期内保证压测数据可信?
小分段:回答:确保压测与监控在同一地域,使用多次重复试验取平均,记录系统指标与网络延迟以排除本地网络抖动影响,避免在高峰期或控台维护时运行测试。保存原始日志并附上环境说明以确保可追溯。
18. 常见问题Q3:如果测试中发生异常(如实例被降配或封号),该如何应对?
小分段:回答:立刻停止压测并保存已有结果与日志,联系云服务商客服说明用途并提供测试时间与IP,审查是否违反使用条款;为防止影响工作,建议事先与云商沟通申请白名单或使用付费短期突发实例做大规模测试。
来源:技术指南在香港云服务器免费期内完成性能压测的方法