ECS中Auto Scaling测试:如何提升CPU使用率触发弹性扩缩容?
模拟ECS容器CPU负载以测试Auto Scaling流程
一、用系统内置命令快速造负载
不用装额外工具,直接用shell命令就能快速占满CPU,适合临时测试:
- 单核心拉满:执行
yes > /dev/null &,这个命令会持续输出空字符,直接占满一个CPU核心。要停的话用pkill yes就行。 - 多核心负载:要占N个核心就开N个后台进程,比如占2核:
yes > /dev/null & yes > /dev/null &,停止同样用pkill yes。 - 可控负载脚本:如果需要让CPU有规律地起伏,写个简单脚本:
#!/bin/bash while true; do # 满负载跑10秒 timeout 10s yes > /dev/null # 休息2秒 sleep 2 done
给脚本加权限:chmod +x cpu-test.sh,运行 ./cpu-test.sh,停止按Ctrl+C或者用 pkill cpu-test.sh。
二、用专业工具生成精准负载
如果需要指定CPU使用率百分比,用这两个工具更靠谱:
- stress-ng:主流Linux发行版都能装,Ubuntu/Debian用
apt install stress-ng,CentOS/RHEL用yum install stress-ng。示例:- 让1个核心维持80%负载,持续5分钟:
stress-ng --cpu 1 --cpu-load 80 --timeout 300s - 拉满2个核心,持续10分钟:
stress-ng --cpu 2 --timeout 600s
- 让1个核心维持80%负载,持续5分钟:
- cpulimit:先跑一个耗CPU的进程(比如
yes > /dev/null &),然后用cpulimit -p <进程PID> -l 70限制它只用70%的CPU。
三、ECS环境的注意事项
- 如果是ECS EC2实例型:先通过SSH登录到实例,再执行上述命令;或者把负载工具打包到容器镜像里,在容器内部运行。
- 如果是Fargate:可以临时修改任务定义,加一个测试容器(比如用ubuntu镜像),启动后进入容器执行命令;或者直接在现有容器里运行(前提是容器有shell权限)。
- 测试前确认Auto Scaling规则:比如CPU阈值是多少、需要持续多久才触发扩容(比如连续5分钟超过70%),测试时要维持负载满足触发条件。
- 测试完一定要停掉负载进程,避免浪费资源或者误触发不必要的扩容。
内容的提问来源于stack exchange,提问作者Furkan Gulsen
相关产品推荐
相关产品推荐

