面试的时候,面试官问我说:nginx 在高并发的情况下如何处理

大致的问答如下(面试官简称面):

  • 官:在服务器的带宽,cpu,内存,I/O 都正常的情况下。程序没有接收到请求,你会从哪方面查原因?
  • 我:查看 nginx 的日志,看有没有收到请求?请求处理时间多久?看看是那条请求处理时间过长?
  • 官:那你要如何处理?
  • 我:使用 nginx 的负载均衡进行转发请求
  • 官:那假如有 1百万/s 的请求,nginx的队列满了,后面的请求只能排队怎么办?
  • 我:从客户端层面进行数据拦截,过滤不必要的请求。
  • 官:所有的请求都是正常的,必须的。
  • 我:如果是不同项目可以配置在不同的服务器上,通过不同的DNS解析。
  • 官:只有一个项目。
  • 我:……(回答不出来)
  • 官:例如刷票软件,每秒都会切换ip,虽然发送的请求都是无效的,但是他们发请求,我们也阻止不了。
  • 我:……

这种情况怎么处理?刷屏软件不应该从客户端进行请求过滤,而不需要向服务器进行请求的吗?
像这种高并发到转发都来不及的情况,实际上什么情景会碰到?有处理方法吗?

木木林
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 12

官:例如刷票软件,每秒都会切换 ip,虽然发送的请求都是无效的,但是他们发请求,我们也阻止不了。

抢票的时候不是客户端每一次抢票都会发到后台的,前端也可以做限流处理的吧。就算是有效的抢票请求,有一部分也不让他们请求到后台。
这是电商进阶教程里说的:9.9. 随机拒绝《L06 Laravel 教程 - 电商进阶 ( Laravel 5.8 ) 》
Laravel

官:那假如有 1 百万 /s 的请求,nginx 的队列满了,后面的请求只能排队怎么办?
加服务器啊。假如有一万台服务器,那不是一秒钟就只处理100此请求了吗

4年前 评论
木木林 (楼主) 4年前
轻描淡写 (作者) 4年前
十七岁程序员想当歌手 4年前
十七岁程序员想当歌手 4年前
木木林 (楼主) 4年前
jenkincei

面试官纯属抬杠,这个问题已经上升到拒绝服务攻击防范了,根本和nginx处理并发不在一个层面。

4年前 评论
木木林 (楼主) 4年前
jenkincei (作者) 4年前
jenkincei (作者) 4年前
╰ゝSakura

感觉面试官在扯蛋吧,每个请求都必须要,但是100万请求/S,你应该问他,你们公司的业务有这么庞大吗?职位打算给多少钱招人

4年前 评论
╰ゝSakura (作者) 4年前
木木林 (楼主) 4年前

面试造飞机,上班拧螺丝! :see_no_evil:

4年前 评论
木木林 (楼主) 4年前

这种面试官,水平也就那样,不知道从哪个地方找到几个不切实际的问题来瞎几把问。把面试者问倒,觉得自己很厉害。

4年前 评论

问这种题就是想压你价格

“什么,这种题都答不出来,就想要12K!9k不能再多了”

4年前 评论
╰ゝSakura 4年前

这个面试官是健身达人吗,这么喜欢抬杠,你就怼他,我要是处理过百万并发的场景,今天就不会坐在这里让你面试

4年前 评论

你没有反问他怎么办嘛?

4年前 评论

@linxb 哈哈,反正感觉也没有戏,还不如怼他,这样也很爽了!

4年前 评论

哈哈哈 100w/s 。
做过最大的60万日活 qps12000
100w/s,不就 40亿日活,地球一半的人都在用,哈哈哈哈哈

4年前 评论

大多数问出这种问题的面试官,做过的项目qps估计都在100以下,没有实战经验 ,整天拿个测试工具在那测并发 :joy:

4年前 评论

面试官总喜欢这么问,好像不问倒都体现不了他的水平一样。

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!