zoukankan      html  css  js  c++  java
  • 混沌测试--网络类故障注入

    本文主要记录使用ChaosBlade工具开展网络类故障注入

    来源:文档https://chaosblade-io.gitbook.io/chaosblade-help-zh-cn/blade

    blade create network delay

    网络延迟实验场景

    介绍
    可以指定网卡、本地端口、远程端口、目标 IP 延迟。需要特别注意,如果不指定端口、ip 参数,而是整个网卡延迟,切记要添加 --timeout 参数或者 --exclude-port 参数,前者是指定运行时间,自动停止销毁实验,后者是指定排除掉的延迟端口,两者都是防止因延迟时间设置太长,造成机器无法连接的情况,如果真实发生此问题,重启机器即可恢复。
    本地端口和远程端口之间是或的关系,即这两个端口都会发生延迟,只要指定了本地端口或者远程端口,无需指定需要排除的端口。端口与 IP 之间是与的关系,即指定的 IP:PORT 发生延迟。
    网络延迟场景主要验证网络异常的情况下,系统的自我容错能力。
    参数

    --destination-ip string 目标 IP. 支持通过子网掩码来指定一个网段的IP地址, 例如 192.168.1.0/24. 则 192.168.1.0~192.168.1.255 都生效。你也可以指定固定的 IP,如 192.168.1.1 或者 192.168.1.1/32,也可以通过都号分隔多个参数,例如 192.168.1.1,192.168.2.1--exclude-port string 排除掉的端口,默认会忽略掉通信的对端端口,目的是保留通信可用。可以指定多个,使用逗号分隔或者连接符表示范围,例如 22,8000 或者 8000-8010。 这个参数不能与 --local-port 或者 --remote-port 参数一起使用
    --exclude-ip string 排除受影响的 IP,支持通过子网掩码来指定一个网段的IP地址, 例如 192.168.1.0/24. 则 192.168.1.0~192.168.1.255 都生效。你也可以指定固定的 IP,如 192.168.1.1 或者 192.168.1.1/32,也可以通过都号分隔多个参数,例如 192.168.1.1,192.168.2.1--interface string 网卡设备,例如 eth0 (必要参数)
    --local-port string 本地端口,一般是本机暴露服务的端口。可以指定多个,使用逗号分隔或者连接符表示范围,例如 80,8000-8080
    --offset string 延迟时间上下浮动的值, 单位是毫秒
    --remote-port string 远程端口,一般是要访问的外部暴露服务的端口。可以指定多个,使用逗号分隔或者连接符表示范围,例如 80,8000-8080
    --time string 延迟时间,单位是毫秒 (必要参数)
    --force 强制覆盖已有的 tc 规则,请务必在明确之前的规则可覆盖的情况下使用
    --ignore-peer-port 针对添加 --exclude-port 参数,报 ss 命令找不到的情况下使用,忽略排除端口
    --timeout string 设定运行时长,单位是秒,通用参数

    案例

    # 访问本机 80808081 端口延迟 3 秒,延迟时间上下浮动 1 秒
    blade create network delay --time 3000 --offset 1000 --interface eth0 --local-port 8080,8081
    
    {"code":200,"success":true,"result":"9b4aa9fabe073624"}
    
    # 可以在另一台相同网络内的机器通过 telnet 命令验证,即 telnet xxx.xxx.xxx.xxx 8080
    # 销毁实验
    blade destroy 9b4aa9fabe073624
    
    # 本机访问外部 14.215.177.39 机器(ping www.baidu.com 获取到的 IP)80 端口延迟 3 秒
    blade create network delay --time 3000 --interface eth0 --remote-port 80 --destination-ip 14.215.177.39
    
    # 可在本机通过 telnet 14.215.177.39 80 命令验证
    # 对整个网卡 eth0 做 5 秒延迟,排除 22 和 8000到8080 端口
    blade create network delay --time 5000 --interface eth0 --exclude-port 22,8000-8080
    
    # 会发现 22 端口和 80008080 端口不受影响,可在另一台相同网络内的机器通过分别 telnet xxx.xxx.xxx.xxx 8080 和 telnet xxx.xxx.xxx.xxx 8081 进行测试

    实现原理
    tc 实现


    常见问题

    Q: {"code":604,"success":false,"error":"RTNETLINK answers: File exists
     exit status 2 exit status 1"} A: 网络相关的场景实验已存在,销毁原有的后再执行。 可以通过 blade status --type create 命令来查看已执行的实验, success 状态的表示正在执行; 如果查找不到相关实验,比如已经删除了原有的 chaosblade 目录,则可通过以下命令恢复实验,注意 eth0 替换为你机器的网卡设备:
    tc filter del dev eth0 parent 1: prio 4
    tc qdisc del dev eth0 root
    也可以添加 --force 命令强制覆盖原有规则。


    blade create network dns

    篡改 dns 域名解析实验场景

    介绍
    此实验会修改本地的 hosts,篡改域名地址映射。
    网络丢包场景主要验证域名解析异常的情况下,系统的自我容错能力。
    参数

    --domain string 域名 (必要参数)
    --ip string 映射的 ip (必要参数)
    --timeout string 设定运行时长,单位是秒,通用参数

    案例

    # www.baidu.com 域名不可访问
    blade create network dns --domain www.baidu.com --ip 10.0.0.0
    
    {"code":200,"success":true,"result":"9e7a168079c68fad"}
    
    # 使用 ping www.baidu.com 来验证,会发现访问不通。

    实现原理
    修改 /etc/hosts
    常见问题
    Q:{"code":604,"success":false,"error":"10.0.0.0 www.baidu.com #chaosblade has been exist exit status 1"} A:表示此条映射已存在,销毁之前的实验即可。如果找不到 UID,可以直接修改 /etc/hosts ,删除包含 #chaosblade 注释的项即可


    blade create network loss

    网络丢包实验场景

    介绍
    可以指定网卡、本地端口、远程端口、目标 IP 丢包。需要特别注意,如果不指定端口、ip 参数,而是整个网卡丢包,切记要添加 --timeout 参数或者 --exclude-port 参数,前者是指定运行时间,自动停止销毁实验,后者是指定排除掉的丢包端口,两者都是防止因丢包率设置太高,造成机器无法连接的情况,如果真实发生此问题,重启机器即可恢复。

    本地端口和远程端口之间是或的关系,即这两个端口都会发生丢包,只要指定了本地端口或者远程端口,无需指定需要排除的端口。端口与 IP 之间是与的关系,即指定的 IP:PORT 发生丢包。

    网络丢包场景主要验证网络异常的情况下,系统的自我容错能力。

    参数

    --destination-ip string 目标 IP. 支持通过子网掩码来指定一个网段的IP地址, 例如 192.168.1.0/24. 则 192.168.1.0~192.168.1.255 都生效。你也可以指定固定的 IP,如 192.168.1.1 或者 192.168.1.1/32,也可以通过都号分隔多个参数,例如 192.168.1.1,192.168.2.1--exclude-port string 排除掉的端口,默认会忽略掉通信的对端端口,目的是保留通信可用。可以指定多个,使用逗号分隔或者连接符表示范围,例如 22,8000 或者 8000-8010。 这个参数不能与 --local-port 或者 --remote-port 参数一起使用
    --exclude-ip string 排除受影响的 IP,支持通过子网掩码来指定一个网段的IP地址, 例如 192.168.1.0/24. 则 192.168.1.0~192.168.1.255 都生效。你也可以指定固定的 IP,如 192.168.1.1 或者 192.168.1.1/32,也可以通过都号分隔多个参数,例如 192.168.1.1,192.168.2.1--interface string 网卡设备,例如 eth0 (必要参数)
    --local-port string 本地端口,一般是本机暴露服务的端口。可以指定多个,使用逗号分隔或者连接符表示范围,例如 80,8000-8080
    --percent string 丢包百分比,取值在[0, 100]的正整数 (必要参数)
    --remote-port string 远程端口,一般是要访问的外部暴露服务的端口。可以指定多个,使用逗号分隔或者连接符表示范围,例如 80,8000-8080
    --force 强制覆盖已有的 tc 规则,请务必在明确之前的规则可覆盖的情况下使用
    --ignore-peer-port 针对添加 --exclude-port 参数,报 ss 命令找不到的情况下使用,忽略排除端口
    --timeout string 设定运行时长,单位是秒,通用参数

    案例

    # 访问本机 80808081 端口丢包率 70%
    blade create network loss --percent 70 --interface eth0 --local-port 8080,8081
    ​
    {"code":200,"success":true,"result":"b1cea124e2383848"}
    ​
    # 可以在另一台相同网络内的机器通过 curl 命令验证,即 curl xxx.xxx.xxx.xxx:8080,不使用 telnet 的原因是 telnet 内部有重试机制,影响实验验证。如果将 percent 的值设置为 100,可以使用 telnet 验证。
    # 销毁实验
    blade destroy b1cea124e2383848
    ​
    # 本机访问外部 14.215.177.39 机器(ping www.baidu.com 获取到的 IP)80 端口丢包率 100%
    blade create network loss --percent 100 --interface eth0 --remote-port 80 --destination-ip 14.215.177.39
    ​
    # 可在本机通过 curl 14.215.177.39 命令验证,会发现访问不通。执行 curl 14.215.177.38 是通的。
    # 对整个网卡 eth0 做 60% 的丢包,排除 22 和 8000到8080 端口
    blade create network loss --percent 60 --interface eth0 --exclude-port 22,8000-8080
    ​
    # 会发现 22 端口和 80008080 端口不受影响,可在另一台相同网络内的机器通过分别执行多次 curl xxx.xxx.xxx.xxx:8080 和 telnet xxx.xxx.xxx.xxx:8081 进行测试
    ​
    # 实现整个网卡不可访问,不可访问时间 20 秒。执行完成下面命令后,当前的网络会中断掉,20 秒后恢复。切记!!勿忘 --timeout 参数
    blade create network loss --percent 100 --interface eth0 --timeout 20


    实现原理
    待补充

    常见问题

    Q: {"code":604,"success":false,"error":"RTNETLINK answers: File exists
     exit status 2 exit status 1"} A: 网络相关的场景实验已存在,销毁原有的后再执行。 可以通过 blade status --type create 命令来查看已执行的实验, success 状态的表示正在执行; 如果查找不到相关实验,比如已经删除了原有的 chaosblade 目录,则可通过以下命令恢复实验,注意 eth0 替换为你机器的网卡设备:
    
    tc filter del dev eth0 parent 1: prio 4
    tc qdisc del dev eth0 root
    也可以添加 --force 命令强制覆盖原有规则。

    blade create network corrupt

    网络包损坏实验场景

    介绍
    可以指定网卡、本地端口、远程端口、目标 IP 包损坏。需要特别注意,如果不指定端口、ip 参数,而是整个网卡包损坏,切记要添加 --timeout 参数或者 --exclude-port 参数,前者是指定运行时间,自动停止销毁实验,后者是指定排除掉的延迟端口,两者都是防止机器无法连接的情况,如果真实发生此问题,重启机器即可恢复。

    本地端口和远程端口之间是或的关系,即这两个端口都会生效,只要指定了本地端口或者远程端口,无需指定需要排除的端口。端口与 IP 之间是与的关系,即指定的 IP:PORT 发生包损坏。

    参数

    --destination-ip string 目标 IP. 支持通过子网掩码来指定一个网段的IP地址, 例如 192.168.1.0/24. 则 192.168.1.0~192.168.1.255 都生效。你也可以指定固定的 IP,如 192.168.1.1 或者 192.168.1.1/32,也可以通过都号分隔多个参数,例如 192.168.1.1,192.168.2.1--exclude-port string 排除掉的端口,默认会忽略掉通信的对端端口,目的是保留通信可用。可以指定多个,使用逗号分隔或者连接符表示范围,例如 22,8000 或者 8000-8010。 这个参数不能与 --local-port 或者 --remote-port 参数一起使用
    --exclude-ip string 排除受影响的 IP,支持通过子网掩码来指定一个网段的IP地址, 例如 192.168.1.0/24. 则 192.168.1.0~192.168.1.255 都生效。你也可以指定固定的 IP,如 192.168.1.1 或者 192.168.1.1/32,也可以通过都号分隔多个参数,例如 192.168.1.1,192.168.2.1--interface string 网卡设备,例如 eth0 (必要参数)
    --local-port string 本地端口,一般是本机暴露服务的端口。可以指定多个,使用逗号分隔或者连接符表示范围,例如 80,8000-8080
    --offset string 延迟时间上下浮动的值, 单位是毫秒
    --remote-port string 远程端口,一般是要访问的外部暴露服务的端口。可以指定多个,使用逗号分隔或者连接符表示范围,例如 80,8000-8080
    --percent 包损坏百分比,取值是不带%号的正整数
    --force 强制覆盖已有的 tc 规则,请务必在明确之前的规则可覆盖的情况下使用
    --ignore-peer-port 针对添加 --exclude-port 参数,报 ss 命令找不到的情况下使用,忽略排除端口
    --timeout string 设定运行时长,单位是秒,通用参数

    案例

    # 访问指定的 ip 请求包损坏,百分比 80%
    blade create network corrupt --percent 80 --destination-ip 180.101.49.12 --interface eth0
    ​
    ping 180.101.49.1264 bytes from 180.101.49.12: icmp_seq=100 ttl=50 time=9.75 ms
    64 bytes from 180.101.49.12: icmp_seq=101 ttl=50 time=9.94 ms
    64 bytes from 180.101.49.12: icmp_seq=102 ttl=50 time=9.76 ms
    64 bytes from 180.101.49.12: icmp_seq=107 ttl=50 time=9.80 ms
    64 bytes from 180.101.49.12: icmp_seq=109 ttl=50 time=9.71 ms
    64 bytes from 180.101.49.12: icmp_seq=111 ttl=50 time=10.2 ms
    64 bytes from 180.101.49.12: icmp_seq=118 ttl=50 time=9.72 ms
    64 bytes from 180.101.49.12: icmp_seq=119 ttl=50 time=9.94 ms
    64 bytes from 180.101.49.12: icmp_seq=120 ttl=50 time=10.0 ms
    64 bytes from 180.101.49.12: icmp_seq=121 ttl=50 time=9.86 ms
    64 bytes from 180.101.49.12: icmp_seq=122 ttl=50 time=9.76 ms
    可以看出执行命令后 icmp_seq=102 开始出现包丢失的情况,执行恢复命令后,从 icmp_seq=118 开始正常

    实现原理
    tc 实现

    blade create network reorder

    网络包重排序实验场景

    介绍
    可以指定网卡、本地端口、远程端口、目标 IP 包重排。需要特别注意,如果不指定端口、ip 参数,而是整个网卡包重复,切记要添加 --timeout 参数或者 --exclude-port 参数,前者是指定运行时间,自动停止销毁实验,后者是指定排除掉不受影响的端口,两者都是防止机器无法连接的情况,如果真实发生此问题,重启机器即可恢复。

    本地端口和远程端口之间是或的关系,即这两个端口都会生效,只要指定了本地端口或者远程端口,无需指定需要排除的端口。端口与 IP 之间是与的关系,即指定的 IP:PORT 发生包重排。

    参数

    --destination-ip string 目标 IP. 支持通过子网掩码来指定一个网段的IP地址, 例如 192.168.1.0/24. 则 192.168.1.0~192.168.1.255 都生效。你也可以指定固定的 IP,如 192.168.1.1 或者 192.168.1.1/32,也可以通过都号分隔多个参数,例如 192.168.1.1,192.168.2.1--exclude-port string 排除掉的端口,默认会忽略掉通信的对端端口,目的是保留通信可用。可以指定多个,使用逗号分隔或者连接符表示范围,例如 22,8000 或者 8000-8010。 这个参数不能与 --local-port 或者 --remote-port 参数一起使用
    --exclude-ip string 排除受影响的 IP,支持通过子网掩码来指定一个网段的IP地址, 例如 192.168.1.0/24. 则 192.168.1.0~192.168.1.255 都生效。你也可以指定固定的 IP,如 192.168.1.1 或者 192.168.1.1/32,也可以通过都号分隔多个参数,例如 192.168.1.1,192.168.2.1--interface string 网卡设备,例如 eth0 (必要参数)
    --local-port string 本地端口,一般是本机暴露服务的端口。可以指定多个,使用逗号分隔或者连接符表示范围,例如 80,8000-8080
    --offset string 延迟时间上下浮动的值, 单位是毫秒
    --remote-port string 远程端口,一般是要访问的外部暴露服务的端口。可以指定多个,使用逗号分隔或者连接符表示范围,例如 80,8000-8080
    --correlation string 和上一包的相关性,取值在 0~100,必要参数,例如 --correlation 70
    --gap string 包序列大小,取值是正整数,例如 --gap 5
    --percent string 立即发送百分比,取值是不带%号的正整数,例如 --percent 50,(必要参数)
    --time string 网络包延迟时间,单位是毫秒,默认值是 10,取值时正整数
    --force 强制覆盖已有的 tc 规则,请务必在明确之前的规则可覆盖的情况下使用
    --ignore-peer-port 针对添加 --exclude-port 参数,报 ss 命令找不到的情况下使用,忽略排除端口
    --timeout string 设定运行时长,单位是秒,通用参数

    案例

    # 访问指定的 ip 请求包乱序
    blade c network reorder --correlation 80 --percent 50 --gap 2 --time 500 --interface eth0 --destination-ip 180.101.49.12ping 180.101.49.12 -A
    ​
    PING 180.101.49.12 (180.101.49.12) 56(84) bytes of data.
    64 bytes from 180.101.49.12: icmp_seq=1 ttl=50 time=510 ms
    64 bytes from 180.101.49.12: icmp_seq=2 ttl=50 time=9.66 ms
    64 bytes from 180.101.49.12: icmp_seq=4 ttl=50 time=9.70 ms
    64 bytes from 180.101.49.12: icmp_seq=3 ttl=50 time=509 ms
    64 bytes from 180.101.49.12: icmp_seq=6 ttl=50 time=10.0 ms
    64 bytes from 180.101.49.12: icmp_seq=5 ttl=50 time=509 ms
    64 bytes from 180.101.49.12: icmp_seq=8 ttl=50 time=9.71 ms
    64 bytes from 180.101.49.12: icmp_seq=7 ttl=50 time=509 ms
    64 bytes from 180.101.49.12: icmp_seq=10 ttl=50 time=9.72 ms
    64 bytes from 180.101.49.12: icmp_seq=9 ttl=50 time=509 ms
    64 bytes from 180.101.49.12: icmp_seq=11 ttl=50 time=509 ms
    64 bytes from 180.101.49.12: icmp_seq=12 ttl=50 time=509 ms
    64 bytes from 180.101.49.12: icmp_seq=13 ttl=50 time=509 ms
    64 bytes from 180.101.49.12: icmp_seq=15 ttl=50 time=9.90 ms
    64 bytes from 180.101.49.12: icmp_seq=14 ttl=50 time=509 ms
    64 bytes from 180.101.49.12: icmp_seq=16 ttl=50 time=509 ms
    可以看出执行命令后开始出现包乱序的情况,执行恢复命令后,开始正常

    实现原理
    tc 实现


    blade create network duplicate

    网络包重复实验场景

    介绍
    可以指定网卡、本地端口、远程端口、目标 IP 包重复。需要特别注意,如果不指定端口、ip 参数,而是整个网卡包重复,切记要添加 --timeout 参数或者 --exclude-port 参数,前者是指定运行时间,自动停止销毁实验,后者是指定排除掉不受影响的端口,两者都是防止机器无法连接的情况,如果真实发生此问题,重启机器即可恢复。

    本地端口和远程端口之间是或的关系,即这两个端口都会生效,只要指定了本地端口或者远程端口,无需指定需要排除的端口。端口与 IP 之间是与的关系,即指定的 IP:PORT 发生包重复。

    参数

    --destination-ip string 目标 IP. 支持通过子网掩码来指定一个网段的IP地址, 例如 192.168.1.0/24. 则 192.168.1.0~192.168.1.255 都生效。你也可以指定固定的 IP,如 192.168.1.1 或者 192.168.1.1/32,也可以通过都号分隔多个参数,例如 192.168.1.1,192.168.2.1--exclude-port string 排除掉的端口,默认会忽略掉通信的对端端口,目的是保留通信可用。可以指定多个,使用逗号分隔或者连接符表示范围,例如 22,8000 或者 8000-8010。 这个参数不能与 --local-port 或者 --remote-port 参数一起使用
    --exclude-ip string 排除受影响的 IP,支持通过子网掩码来指定一个网段的IP地址, 例如 192.168.1.0/24. 则 192.168.1.0~192.168.1.255 都生效。你也可以指定固定的 IP,如 192.168.1.1 或者 192.168.1.1/32,也可以通过都号分隔多个参数,例如 192.168.1.1,192.168.2.1--interface string 网卡设备,例如 eth0 (必要参数)
    --local-port string 本地端口,一般是本机暴露服务的端口。可以指定多个,使用逗号分隔或者连接符表示范围,例如 80,8000-8080
    --offset string 延迟时间上下浮动的值, 单位是毫秒
    --remote-port string 远程端口,一般是要访问的外部暴露服务的端口。可以指定多个,使用逗号分隔或者连接符表示范围,例如 80,8000-8080
    --percent 包重复百分比,取值是不带%号的正整数
    --force 强制覆盖已有的 tc 规则,请务必在明确之前的规则可覆盖的情况下使用
    --ignore-peer-port 针对添加 --exclude-port 参数,报 ss 命令找不到的情况下使用,忽略排除端口
    --timeout string 设定运行时长,单位是秒,通用参数

    案例

    # 访问指定的 ip 请求包损坏,百分比 80%
    blade create network corrupt --percent 80 --destination-ip 180.101.49.12 --interface eth0
    ​
    ping 180.101.49.1264 bytes from 180.101.49.12: icmp_seq=64 ttl=50 time=9.94 ms
    64 bytes from 180.101.49.12: icmp_seq=65 ttl=50 time=9.73 ms
    64 bytes from 180.101.49.12: icmp_seq=65 ttl=50 time=9.74 ms (DUP!)
    64 bytes from 180.101.49.12: icmp_seq=66 ttl=50 time=9.77 ms
    64 bytes from 180.101.49.12: icmp_seq=66 ttl=50 time=9.80 ms (DUP!)
    64 bytes from 180.101.49.12: icmp_seq=67 ttl=50 time=9.70 ms
    64 bytes from 180.101.49.12: icmp_seq=67 ttl=50 time=9.71 ms (DUP!)
    64 bytes from 180.101.49.12: icmp_seq=68 ttl=50 time=11.0 ms
    64 bytes from 180.101.49.12: icmp_seq=68 ttl=50 time=11.1 ms (DUP!)
    64 bytes from 180.101.49.12: icmp_seq=69 ttl=50 time=9.78 ms
    64 bytes from 180.101.49.12: icmp_seq=69 ttl=50 time=9.78 ms (DUP!)
    64 bytes from 180.101.49.12: icmp_seq=70 ttl=50 time=9.70 ms
    64 bytes from 180.101.49.12: icmp_seq=70 ttl=50 time=9.70 ms (DUP!)
    64 bytes from 180.101.49.12: icmp_seq=71 ttl=50 time=9.71 ms
    64 bytes from 180.101.49.12: icmp_seq=71 ttl=50 time=9.71 ms (DUP!)
    64 bytes from 180.101.49.12: icmp_seq=72 ttl=50 time=9.73 ms
    64 bytes from 180.101.49.12: icmp_seq=72 ttl=50 time=9.74 ms (DUP!)
    64 bytes from 180.101.49.12: icmp_seq=73 ttl=50 time=9.69 ms
    64 bytes from 180.101.49.12: icmp_seq=73 ttl=50 time=9.73 ms (DUP!)
    64 bytes from 180.101.49.12: icmp_seq=74 ttl=50 time=9.73 ms
    64 bytes from 180.101.49.12: icmp_seq=74 ttl=50 time=9.73 ms (DUP!)
    64 bytes from 180.101.49.12: icmp_seq=75 ttl=50 time=9.68 ms
    64 bytes from 180.101.49.12: icmp_seq=75 ttl=50 time=9.68 ms (DUP!)
    64 bytes from 180.101.49.12: icmp_seq=76 ttl=50 time=10.0 ms
    64 bytes from 180.101.49.12: icmp_seq=76 ttl=50 time=10.0 ms (DUP!)
    64 bytes from 180.101.49.12: icmp_seq=77 ttl=50 time=9.68 ms
    64 bytes from 180.101.49.12: icmp_seq=77 ttl=50 time=9.80 ms (DUP!)
    64 bytes from 180.101.49.12: icmp_seq=78 ttl=50 time=9.70 ms
    64 bytes from 180.101.49.12: icmp_seq=79 ttl=50 time=9.70 ms
    64 bytes from 180.101.49.12: icmp_seq=80 ttl=50 time=9.74 ms
    可以看出执行命令后开始出现包重复的情况,执行恢复命令后,开始正常

    实现原理
    tc 实现

    blade create network occupy

    网络本地端口占用

    介绍
    本地端口占用,验证端口已被占用的情况下,使用此端口的业务容错能力

    参数

    --port string 指定被占用的端口,(必填项)
    --force 强制占用此端口,会将已使用此端口的进程杀掉
    --timeout string 设定运行时长,单位是秒,通用参数

    案例

    # 指定 8080 端口占用
    blade c network occupy --port 8080 --force
    ​
    # 命令执行前
    netstat -tanp | grep 8080
    tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 19562/java
    ​
    # 命令执行后
    netstat -tanp | grep 8080
    tcp6 0 0 :::8080 :::* LISTEN 20041/chaos_occupyn

    实现原理
    指定端口启动 server 实现

    常见问题
    Q: {"code":604,"success":false,"error":"Error: listen tcp :8080: bind: address already in use exit status 1"} A:指定的端口已被占用,可以添加 --force 参数,强制杀掉使用此端口的进程

  • 相关阅读:
    CheckBox单选功能
    DOTNET
    常用命令行
    不能调试的问题的解决
    url字符串中含有中文的处理
    案例:星移eWorkflow.net系统
    使用正则表达式求完整路径中的文件名
    缺少一个***.resource的报告的解决
    Mapx中的图元移动
    Distance计算的距离随经纬度不同
  • 原文地址:https://www.cnblogs.com/mingfan/p/13329341.html
Copyright © 2011-2022 走看看