5.9 KiB
【M22项目】修改Split By类型Shaping Profile的速率后,无法打开网址
| ID | Creation Date | Assignee | Status |
|---|---|---|---|
| OMPUB-1269 | 2024-05-03T18:08:04.000+0800 | 杨威 | 处理中 |
描述:修改限制速率大小后无法打开网址,将Rule关闭后,可以打开网址
复现步骤:
- 创建Shaping Rule如下图所示: !image-2024-05-03-16-35-44-425.png|thumbnail!
- 修改Shaping Profile限制的速率大小如下图: !image-2024-05-03-16-36-34-036.png|thumbnail!
- 访问地址:[https://www.youtube.com|https://www.youtube.com/]
当前问题:无法打开youtube
包已放到附件中liuxueli commented on 2024-05-04T12:25:33.291+0800:
-
现象: ** 命中shaping策略后,客户端正在下载文件的连接终止(下载速率为0),客户端访问网页(youtube)失败
-
干扰 ** 测试时存在Monitor、statistics、shaping策略,仅存在一条生效的shaping策略 ** 因Hotfix存在重启设备,单位时间内仅存在一台设备重启
-
复现 ** kill consul、shaping进程未复现问题 ** 随机挑选一台没有流量的设备重启即复现问题,测试仅存在一条生效的shaping策略且仅存在一个profile
** *** 重启一台设备且仅重启一次
-
结论 ** 复现问题时执行cluster sanity check命令查看存在异常的key,执行结果如下
**
{code:java} [root@tsg-traffic-engine-vsys-1-shaping-c7d76f9c9-sgkd4 shaping_engine]# exit [root@MDY-ATOM-TSGX009 tsg-traffic-engine-vsys-1]# kubectl exec -it tsg-traffic-engine-vsys-1-shaping-c7d76f9c9-sgkd4 -- bash Defaulted container "shaping" out of: shaping, telegraf-shaping, log-dir-hook, init-default-svc (init), init-announce-svc (init), init-cm-svc (init), init-packet-io-engine-ready (init), shaping-init (init) [root@tsg-traffic-engine-vsys-1-shaping-c7d76f9c9-sgkd4 shaping_engine]# /opt/tsg/framework/bin/swarmkv-cli -n tsg-shaping-vsys1 -c 10.172.12.9:8500 tsg-shaping-vsys1> cluster sanity check
- "tsg-shaping-4023-incoming" tsg-shaping-vsys1> cluster sanity check
- "tsg-shaping-4023-incoming" tsg-shaping-vsys1> cluster sanity check
- "tsg-shaping-4023-incoming"
- "tsg-shaping-4023-incoming" tsg-shaping-vsys1> cluster sanity check (integer) 0 tsg-shaping-vsys1> cluster sanity check (integer) 0 tsg-shaping-vsys1> {code}
- 疑点 ** 推测仅重启swarmkv集群的leader或者key owner会导致异常,但随机挑选一台无流量的设备重启即复现本问题
- 下一步复测 ** 复现问题时,确认重启设备与swarmkv集群的leader或者key owner设备是否正相关。
yangwei commented on 2024-05-04T13:49:56.142+0800:
M22现场 2024-05-04复测,在集群未有节点重启的情况下,概率性出现https://jira.geedge.net/browse/TSG-17649类似的现象,即一段时间后,客户端断网。
检查Shaping Engine的统计输出,发现异步调用的P80延迟为17.7ms,平均延迟为6.2ms
!image-2024-05-04-13-47-43-156.png|width=720,height=210!
yangwei commented on 2024-05-04T17:49:59.229+0800:
进一步进行测试验证,同样下发如下策略
- splitby token bucket,限速为7.5Mbps
- 限速条件为Client IP
{}持续测试一段时间后,客户端出现断网的现象{}。
!image-2024-05-04-17-41-45-545.png|width=613,height=305!
测试的{}客户端流量分散在不同的站点的不同节点{},在{}YGN-MYTEL站点{}检查Shaping Engine的{}请求返回延迟,平均20ms。{}
!image-2024-05-04-17-45-02-867.png|width=834,height=240!
使用 CLUSTER SANITY check检查集群状态,{}显示存在异常的key{}。
!image-2024-05-04-17-46-14-535.png|width=712,height=396!
{}使用SwarmKV CLI模拟新的member(1233)进行消费{},由于Split By的单位为local host,原则上模拟出的member可以独享一个7.5Mbps的Token_bucket,但是使用命令行{}连续消费少量Token,仍然出现消费失败的情况,不符合预期。{}
!image-2024-05-04-17-48-39-582.png!
上述客户端断网的情况,概率性出现,且在一段时间后能够自愈。
初步结论:issue中描述的问题,{}与标题中修改profile的行为无直接关系{},而是下发{}SplitBy的限速Profile后{},{}一定概率会出现客户端断网的现象{}。可能的原因为集群内部通信延迟较大后,由于SplitBy Token Bucket同步的数据量较大,Shaping Engine获取Token失败,造成客户端疑似断网的现象。
M现场尝试下发Generic Token Bucket并测试,进一步确认上述结论。
hebingning commented on 2024-05-05T12:38:54.157+0800:
5月4日多次进行测试,测试结果:
Shaping Rule引用Type为:Generic/Fair Share 的Shaping Profile
未发生断网情况
Shaping Rule引用Type为:Split By的Shaping Profile
出现客户端断网的情况[~yangwei]
zhengchao commented on 2024-05-06T10:46:21.985+0800:
用SWARMKV的INFO命令看一下节点的同步带宽。
liuxueli commented on 2024-05-06T11:51:31.355+0800:
- 这个是客户端断网期间执行CLUSTER SANITY check / CLUSTER NODES / CLUSTER INFO三个命令的结果: ** [^10.161.12.26_2024-05-04_15_34_58.txt]
zhengchao commented on 2024-05-06T13:31:10.804+0800:
Bulk Token Bucket同步消息是4Mb/msg,1个worker线程可能扛不住这么大的同步量 {quote}17) 1) "10.168.12.6:30745"
sync_err: 882383
instantaneous_input_kbps: 234599.00 instantaneous_input_msgs: 69.00{quote}
Attachments
56643/10.161.12.26_2024-05-04_15_34_58.txt
56612/image-2024-05-03-16-35-44-425.png
56611/image-2024-05-03-16-36-34-036.png
56623/image-2024-05-04-13-47-43-156.png
56625/image-2024-05-04-17-41-45-545.png
56626/image-2024-05-04-17-45-02-867.png
56627/image-2024-05-04-17-46-14-535.png
56628/image-2024-05-04-17-48-39-582.png
56610/youtube.pcapng