V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
justthewayyouare
V2EX  ›  程序员

服务接受请求过多就崩溃

  •  
  •   justthewayyouare · 186 天前 via iPhone · 4197 次点击
    这是一个创建于 186 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    建议从最外围运行的地方 catch 异常,如发现未知异常就 catch 住,然后重启进程或线程,确保异常不会导致进程变“死进程”。
    dode
        10
    dode  
       186 天前
    限制连接数量和请求速度
    sumarker
        11
    sumarker  
       186 天前
    加机器 做负载
    dif
        12
    dif  
       186 天前
    个人网站,崩就崩了。别误伤账单就行。
    另外,合理利用缓存,尽量使用静态化解决。
    nuyan
        13
    nuyan  
       186 天前
    想搞你,无非你能做的就是技术+金钱。最简单的就是花钱往死往死加机器。
    BinaryDH
        14
    BinaryDH  
       186 天前
    真正的解决办法是,限流熔断
    newaccount
        15
    newaccount  
       186 天前
    个人网站 1000 并发……
    公司网站 tomcat 做到 20 并发能不崩我就不继续测了,通过负载均衡拉到七八十应付爬虫就足够足够的
    realJamespond
        16
    realJamespond  
       186 天前
    把带宽调低,物理限速
    janus77
        17
    janus77  
       186 天前
    理论上是这样,可是同时发 1000 个请求也是要很高成本的,换句话说如果你的项目不是企业级项目,没有商业价值,那就不会有哪个黑客来花大价钱攻击你,因为他得不到什么东西。
    当然如果你只是单纯想提高一下安全性和性能的话,楼上很多做法都可以来一遍,各个环节能提升的地方都可以提升,就看你愿不愿意花钱了
    IDAEngine
        18
    IDAEngine  
       186 天前
    开 API 网关,把高价值客户调度到高性能服务器,低价值客户调度到易受攻击的节点
    jioswu
        19
    jioswu  
       186 天前
    换语言是成本最低的,前提是自己会,否则加机器上负载均衡
    pkoukk
        20
    pkoukk  
       186 天前
    你这其实是两个问题
    1 、怎么防止被打
    2 、怎么提高服务性能
    方案太多了,一切以你的预算为前提
    qwertyzzz
        21
    qwertyzzz  
       186 天前
    自己先主动崩
    freezebreze
        22
    freezebreze  
       186 天前
    鸵鸟模式
    dashabi
        23
    dashabi  
       186 天前
    并发 1000 ?我站每天有 8 万访问,在线人数 2000-3000.都没达到 并发 1000 、、厉害啊。
    是每个请求处理时间长???有 1000 并发,,弄个高档服务器。
    MeteorCat
        24
    MeteorCat  
       186 天前 via Android
    买高防清洗掉攻击 IP
    alsas
        25
    alsas  
       186 天前
    加机器
    kkkbbb
        26
    kkkbbb  
       186 天前
    @dashabi 他是模拟
    ShuWei
        27
    ShuWei  
       186 天前
    先在入口限流吧,然后再排查下为什么彻底宕了,估计是有 bug 修修
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   892 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 21:22 · PVG 05:22 · LAX 14:22 · JFK 17:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.