【问题标题】:Does hapijs have something like overload protection?hapijs 有过载保护之类的功能吗?
【发布时间】:2015-08-04 19:20:30
【问题描述】:

如果 hapi 服务器超载,它会做什么?是否有类似 toobusy-js 的东西通过缩短一些错误的请求来防止服务器的后果。

【问题讨论】:

    标签: node.js hapijs


    【解决方案1】:

    是的,它已嵌入到框架中,请查看连接 settings 上的 load。 您有 3 个选项:

    • maxHeapUsedBytes - 最大 V8 堆大小,超过该大小的传入请求会被 HTTP 服务器超时 (503) 响应拒绝。默认为 0(无限制)。
    • maxRssBytes - 最大进程 RSS 大小,超过该大小的传入请求会被 HTTP 服务器超时 (503) 响应拒绝。默认为 0(无限制)。
    • maxEventLoopDelay - 以毫秒为单位的最大事件循环延迟持续时间,在此期间传入请求被 HTTP 服务器超时 (503) 响应拒绝。默认为 0(无限制)。 `

    并且您一定不要忘记在server.load config 上设置采样间隔(两次检查之间的时间):

    • sampleInterval - 以毫秒为单位的采样频率。默认为 0(无采样)。

    例子:

    服务器配置:

    {
      "load": {
        "sampleInterval": 1000
      }
    }
    

    连接配置:

    {
      "load": {
        "maxHeapUsedBytes": 1073741824,
        "maxRssBytes": 1610612736,
        "maxEventLoopDelay": 5000
      }
    }
    

    【讨论】:

    • 很抱歉打扰您,但选项的合理值是多少?
    • 原因是为了防止服务器完全崩溃(参见上面的问题)。我最好拒绝 Web 服务中的某些用户并为其他用户工作,而不是服务器负载过重并变得无法管理。
    • @Pierre Inglebert 选项在开发环境中有效,但在实验室测试环境中无效
    • @Pierre Inglebert 当我运行 npm test 我得到了这个(看看gist.github.com/whisher/3a6b1d0abe14057a5ba8
    • 你启动服务器了吗?例如检查这个测试:github.com/hapijs/hapi/blob/…我没有在我的测试中设置负载配置。
    猜你喜欢
    • 1970-01-01
    • 2015-05-31
    • 1970-01-01
    • 2019-12-27
    • 2011-06-26
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多