nginx 怎么根据全局连接数来做全局总的限流并自定义相应信息

2022-08-01 11:41:18 +08:00
 dzdh

场景:

php-fpm 应用。秒杀活动。偶尔一次不经常。 nginx->fpm 直接 502

问题:

nginx 限流好像是根据某个 ip 限制或者即便全局限制不能定义响应内容?

疑惑:

一共开了 100 个 php-fpm 进程,那就限制 nginx 的全局并发连接数为 100 ?或者超过 100 ,但是正在处理的请求超过 100 后直接返回 http 200 contnet:json: code:xxxx,msg:当前活动爆满请稍后再试.. ?

尝试用 go 写了个 fcgiclient (所以发到了 go 节点),由 go 在 servehttp 中判断全局 redis 计数器或单机计数器,然后流量由 go 接管做内部队列,返回 sid ( sessionid ),前端轮询 sid 。

为啥不用 php 做,因为流量就到不了 fpm ,nginx->fpm 直接就 502 了

目标:

所有流量都必须正确响应 200 ,5xx 响应为 0 次。每一个用户的每一次请求都正常返回友好提示。

1575 次点击
所在节点    Go 编程语言
22 条回复
yc8332
2022-08-02 18:20:38 +08:00
@dzdh 那看你的突发流量是多少了。如果不是海量还好吧,直接返回错误 php-fpm 问题不大,搞个 redis 自增就限流,超了直接返回你要的内容。
yc8332
2022-08-02 18:23:55 +08:00
就是你把并发限制开小一点。。剩下的进程去处理其他请求

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/869910

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX