使用 toxiproxy 模拟服务读超时

Ⅰ 创建服务代理模拟服务读超时

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 常见命令

代理常用命令

  1. 创建一个新的代理
toxiproxy-cli create --listen <listen_address> --upstream <upstream_address> <proxy_name>
  1. 删除一个代理
toxiproxy-cli delete <proxy_name>
  1. 列出所有代理
toxiproxy-cli list
  1. 检查一个代理的详细信息
toxiproxy-cli inspect <proxy_name>

toxics 常用命令

  1. 给代理添加一种 toxics
toxiproxy-cli toxic add -t <type> -n <toxic_name> -a <attribute>=<value> <proxy_name>
  1. 移除代理的 toxics
toxiproxy-cli toxic remove -n <toxic_name> <proxy_name>
  1. 更新代理的 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>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容