Ⅰ 创建服务代理模拟服务读超时
1. 安装 toxiproxy
brew install toxiproxy
2. 启动 toxiproxy-server
toxiproxy-server
3. 使用 toxiproxy-cli
配置服务代理并添加读延迟:
# 创建代理服务
toxiproxy-cli create --listen localhost:8080 --upstream <真实服务地址:端口> proxy-service-name
# 为 proxy-service-name 服务添加 3000ms 读延迟
toxiproxy-cli toxic add -t latency -a latency=3000 proxy-service-name
4. 访问代理服务
将客户端访问的服务地址替换为代理服务的地址:localhost:8080
,请求会发现服务有 3s
的延迟才会返回。
Ⅱ toxiproxy
常见命令
代理常用命令
- 创建一个新的代理
toxiproxy-cli create --listen <listen_address> --upstream <upstream_address> <proxy_name>
- 删除一个代理
toxiproxy-cli delete <proxy_name>
- 列出所有代理
toxiproxy-cli list
- 检查一个代理的详细信息
toxiproxy-cli inspect <proxy_name>
toxics
常用命令
- 给代理添加一种
toxics
toxiproxy-cli toxic add -t <type> -n <toxic_name> -a <attribute>=<value> <proxy_name>
- 移除代理的
toxics
toxiproxy-cli toxic remove -n <toxic_name> <proxy_name>
- 更新代理的
toxics
toxiproxy-cli toxic update -n <toxic_name> -a <attribute>=<value> <proxy_name>
常见的 toxics
和属性
- 添加延迟
用于模拟网络抖动的参数。抖动指的是数据包传输延迟的变动范围。通过引入抖动,可以更真实地模拟实际网络环境中的不稳定性。
latency
: 平均延迟时间,以毫秒为单位。例如:100 表示 100ms。
jitter
: 抖动值,以毫秒为单位。例如:50 表示 50ms 的随机波动。
这两个参数这样设置表示延迟平均值为 100ms,实际延迟将会在 50ms 到 150ms 之间随机波动。
latency=<ms>,jitter=<ms>
toxiproxy-cli toxic add -t latency -n <toxic_name> -a latency=100 -a jitter=50 <proxy_name>
- 限制带宽
限制最大的带宽,单位
kb/s
。
rate=<KB/s>
toxiproxy-cli toxic add -t bandwidth -n <toxic_name> -a rate=1000 <proxy_name>
- 延迟连接关闭
在连接关闭之前引入一个延迟,从而测试应用程序在面对慢速连接关闭时的表现。
delay=<ms>
toxiproxy-cli toxic add -t slow_close -n <toxic_name> -a delay=1000 <proxy_name>
- 超时
用于模拟网络请求超时。这种
toxic
会在指定的时间内阻塞连接,之后断开连接,从而测试应用程序在面对请求超时时的表现。
timeout=<ms>
toxiproxy-cli toxic add -t timeout -n <toxic_name> -a timeout=1000 <proxy_name>