服务接受请求过多就崩溃

199 天前
 justthewayyouare

我同一时间给服务器发送 1000 个 ajax 请求,服务器就崩了,得重启。 万一有人想搞我的网站,也同时发 1000 个 ajax 过来,那我网站不就崩了? 有没有办法让服务器接受大量请求不崩溃的办法?

4220 次点击
所在节点    程序员
27 条回复
zjsxwc
199 天前
- jvm 的加大内存。
- 改换用 php-fpm 重写。
- 改用 serverless 重新。
gbw1992
199 天前
lsk569937453
199 天前
如果你的服务器并发超过 1000 的话,那就赚老鼻子钱了,招高级程序员给你打工吧。
seers
199 天前
上消息队列
opengps
199 天前
1000 并发(并发一般是指 1 秒内的并发请求数量)是非常优秀的业务指标了。
这个时候你需要的是多机器多站点的去做负载均衡做集群架构部署,而不是拼了命的提高单机性能。道理就好比你的 cpu 主频这么多年也就是个 GHz 了,于其提高单个性能不如再来一个 cpu 满足需要
sdjl
199 天前
那我网站不就崩了? 是的,就崩了。

有没有办法让服务器接受大量请求不崩溃的办法? 对方要搞你,主要是搞钱(例如搞你的 CDN 流量费),不是搞崩。通常情况下,怕搞钱不怕搞崩。

说回楼主的问题,如何提高并发能力。

1 、静态资源都走 CDN 。
2 、能缓存等请求尽量缓存,特别是重复的数据库查询。
3 、开多进程守护,例如 8 个、80 个、200 个等等。
4 、进程之间记得共享缓存数据,节约内存和时间。
5 、做好并发写攻击的防御(特别是涉及到金钱的程序)。
6 、该崩就崩,人都是要死的,何况程序,别怕。
sdjl
199 天前
2 、能缓存请求就尽量缓存,特别是重复的数据库查询。
blackeeper
199 天前
想让服务器不蹦?那么你可以选择换
1 ,更好的 CPU 、
2 ,更大的内存条
3 ,速度更快的硬盘 SSD
4 ,网口,以及超大带宽
5 ,换操作系统
6 ,.......
还有一堆可以升级的地方,都是可以避免崩溃的地方,关键在于你业务服务器的瓶颈在哪儿
sdjl
199 天前
“服务器就崩了,得重启” 这里可能是因为你的进程有异常,没有 catch 住,然后进程死掉了。

建议从最外围运行的地方 catch 异常,如发现未知异常就 catch 住,然后重启进程或线程,确保异常不会导致进程变“死进程”。
dode
199 天前
限制连接数量和请求速度
sumarker
199 天前
加机器 做负载
dif
199 天前
个人网站,崩就崩了。别误伤账单就行。
另外,合理利用缓存,尽量使用静态化解决。
nuyan
199 天前
想搞你,无非你能做的就是技术+金钱。最简单的就是花钱往死往死加机器。
BinaryDH
199 天前
真正的解决办法是,限流熔断
newaccount
199 天前
个人网站 1000 并发……
公司网站 tomcat 做到 20 并发能不崩我就不继续测了,通过负载均衡拉到七八十应付爬虫就足够足够的
realJamespond
199 天前
把带宽调低,物理限速
janus77
199 天前
理论上是这样,可是同时发 1000 个请求也是要很高成本的,换句话说如果你的项目不是企业级项目,没有商业价值,那就不会有哪个黑客来花大价钱攻击你,因为他得不到什么东西。
当然如果你只是单纯想提高一下安全性和性能的话,楼上很多做法都可以来一遍,各个环节能提升的地方都可以提升,就看你愿不愿意花钱了
IDAEngine
199 天前
开 API 网关,把高价值客户调度到高性能服务器,低价值客户调度到易受攻击的节点
jioswu
199 天前
换语言是成本最低的,前提是自己会,否则加机器上负载均衡
pkoukk
199 天前
你这其实是两个问题
1 、怎么防止被打
2 、怎么提高服务性能
方案太多了,一切以你的预算为前提

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

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

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

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

© 2021 V2EX