所谓服务挂掉

【所谓服务挂掉】

不知道有没有人跟我有一样的疑问"大量请求涌入为什么会把服务搞挂掉?"

有线程池的存在,不是限制了进程能占用的系统资源么?为什么会挂掉呢?

所以问题就出在,这个挂掉,具体指的是什么意思么?进程的崩溃吗?

答:这里的“挂掉”一般情况下来说,说的还真不是进程挂掉。

以一个单体的 springboot 构建的 hello-world 的 web 程序来进行举例。

min = 200
max = 200
queue-size = Integer.MAX_VALUE

如果一下子涌入上千万个请求,假设网卡之类的不会成为瓶颈,进程也能够维持这么多的连接,那前面的请求就会马上占据线程池里的所有 200 个线程,进行处理,后面的请求进入等待队列。

此时就要注意了,程序的处理速度是有限的,越后面入队的请求的等待时间就会越长,请求的客户端如果是程序的话,就可能会触发客户端的超时重试,进一步加大了服务器的压力(新重新入队等待),如果是人的话,就更可怕了,那个刷新点击来简直太顺手了,虽然服务器一般会有预留空间,服务器的 CPU 可能并不会占满,但是对于客户端来说,这个服务因为排队等待时间过长,几乎处于不可用状态,我理解这就是 “挂掉” 了。

如果因为某个 api 的拥挤,抢占了主要业务的空间,那真更完蛋了。

解决方案:

  • 针对 api 限流
  • 纵向就是降低单个服务的单次处理时长,横向就是加实例,加机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lixifun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值