项目:https://github.com/alexei-led/pumba
参考:https://cloud.tencent.com/developer/article/1616202
一、Pumba介绍
将应用部署至Docker中后,我们往往需要测试应用在特定网络状况下的性能。
Pubma 能够完成网络模拟,模拟包括一系列的网络问题(延迟,丢包,使用不同的丢包模型,带宽限制等等)。针对网络模拟,Pumba使用的是Linux内核tc
netem
实现的。 如果目标container不支持tc的话,Pumba将会使用sidekick 附着到目标容器进行控制。
二、Pumba安装
# Download binary from https://github.com/gaia-adm/pumba/releases
curl -L https://github.com/alexei-led/pumba/releases/download/0.5.2/pumba_darwin_amd64 --
# Linux
curl -L https://github.com/alexei-led/pumba/releases/download/0.5.2/pumba_linux_amd64 --
output /usr/local/bin/pumba
chmod +x /usr/local/bin/pumba && pumba --help
# Install with Homebrew (MacOS only)
brew install pumba && pumba --help
# Use Docker image
docker run gaiaadm/pumba pumba --help
三、基本网络控制指令
(1) 延时
# 将container容器与其他容器间的RTT设置为3000ms,时长2m
pumba netem --duration 2m --tc-image gaiadocker/iproute2 delay --time 3000 container
(2) 抖动
# 将container容器与其他容器间的RTT范围为1000±100ms,呈正态分布,时长2m
pumba netem --duration 2m --tc-image gaiadocker/iproute2 delay --time 1000 ---jitter 100 --distribution normal container
(3) 丢包
# 将container容器与其他容器间的丢包率设置为20%,时长2m
pumba netem --duration 2m --tc-image gaiadocker/iproute2 loss --percent 20 container
(4) 带宽
# 将container容器与其他容器间的带宽限制为100kbit,时长2m
Pumba netem --duration 2m --tc-image gaiadocker/iproute2 rate --rate 100kbit container