Sentinel icon indicating copy to clipboard operation
Sentinel copied to clipboard

【疑问】系统自适应限流规则中的入口流量QPS具体包含哪些请求?

Open allen-kaiser-cai opened this issue 2 years ago • 5 comments

我司的SaaS系统采用Spring Cloud Alibaba作为基础架构,其中限流与熔断的实现选用了Sentinel组件。为了确保系统能正常提供基本服务,我配置了系统规则,入口qps限流3000,如下图所示。 截屏2023-11-06 16 58 13

生产环境部署了12台gateway-service,预期是系统能承载12*3000=36000QPS的http请求,因为所有的页面请求和第三方系统请求都会通过Nginx转发到网关,网关再转发到具体微服务。但实际上当Nginx的峰值QPS到达3000左右时,系统规则的限流就触发了,这我预期的36000QPS存在巨大的差异。我分析了单台网关的限流日志文件gateway-service-metrics.log.2023-11-06,发现当Nginx的峰值qps为3977(都是http请求)时,单台网关的峰值QPS是3492。 截屏2023-11-06 17 06 33 截屏2023-11-06 17 06 57

不是我理解的3977/12约等于330qps。我从文档:https://github.com/alibaba/Sentinel/wiki/%E7%B3%BB%E7%BB%9F%E8%87%AA%E9%80%82%E5%BA%94%E9%99%90%E6%B5%81 看到了入口 QPS的定义:单台机器上所有入口流量的 QPS 。

我想确认一下,所有入口流量的意思是不仅包含了入口的http请求,还包含其它tcp/udp的请求(如tcp握手包等)么?

allen-kaiser-cai avatar Nov 08 '23 03:11 allen-kaiser-cai

确认一下是所有的 Gateway-service 都触发限流, 还是说只有一个,如果只有一个的话排查一下是不是 nginx 转发有问题。

huang-gz avatar Nov 09 '23 01:11 huang-gz

确认一下是所有的 Gateway-service 都触发限流, 还是说只有一个,如果只有一个的话排查一下是不是 nginx 转发有问题。

是所有网关实例都触发了。我抽查了几个网关,同一时间点日志中记录的请求数还是比较均衡的

allen-kaiser-cai avatar Nov 09 '23 03:11 allen-kaiser-cai

以今天上午七点的数据为例子,Nginx上2023-11-09 07:00:01.000的峰值QPS是4167(只统计http请求),我查了4台网关的gateway-service-metrics.log.2023-11-09,2023-11-09 07:00:01的QPS分别是3333、3354、3344、3273。 截屏2023-11-09 11 40 03 截屏2023-11-09 11 38 57 截屏2023-11-09 11 39 11 截屏2023-11-09 11 39 24 截屏2023-11-09 11 39 42

所以我觉得应该是网关上的QPS统计方式不一样了。

allen-kaiser-cai avatar Nov 09 '23 03:11 allen-kaiser-cai

有没有考虑Options类型的请求

liudaac avatar Nov 09 '23 04:11 liudaac

有没有考虑Options类型的请求

我通过工具对某台网关进行抓包分析过,所有的http请求加起来(包括各种请求类型)的数量也没有到这个量级的。 这是我在11月1日13:45:23在一台网关上看到的日志,1秒内的总请求数有250个。 截屏2023-11-01 16 42 19

我抓包后分析,发现13:45:23秒内的http协议包是43个,与上面sentinel日志的250差距很大。 截屏2023-11-09 13 59 17

如果统计请求包中13:45:23秒的入口tcp请求数量,大约240个左右,接近上面sentinel日志的数量。 截屏2023-11-06 15 17 24

allen-kaiser-cai avatar Nov 09 '23 06:11 allen-kaiser-cai