【问题标题】:unknown directive "passenger_force_max_concurrent_requests_per_process"未知指令“passenger_force_max_concurrent_requests_per_process”
【发布时间】:2016-06-13 01:58:02
【问题描述】:

我正在尝试使用 Node.js、Passenger 和 nginx 编写一个 Web 后端。
在我尝试使用 passenger_force_max_concurrent_requests_per_process 设置添加多个节点进程之前,它工作得很好。出于某种原因,添加该设置会给我以下错误:
unknown directive "passenger_force_max_concurrent_requests_per_process"

如果我注释掉这条线,它工作正常,所以我真的不知道发生了什么。欢迎任何帮助。

谢谢,
-tlf

编辑:

nginx 和Passenger 都可以正常工作,直到我尝试更改该设置,此时由于上述错误,nginx 无法启动。如果我删除该行,一切都会再次正常运行。

是的,我确实知道那行代码的作用,这就是为什么我首先尝试添加它。我非常感谢能够设置该属性,但我无法设置,因为它崩溃了。

【问题讨论】:

    标签: node.js nginx passenger


    【解决方案1】:

    最有可能的是您的乘客版本太旧。 passenger_force_max_concurrent_requests_per_process 是在 5.0.22 版本中引入的。

    另一种可能是你在升级Passenger时没有更新你的Nginx安装。

    【讨论】:

    • 是的,可以。原来我正在运行 5.0.21。现在的问题是如何更新它?运行 brew upgrade nginx --with-passenger 不起作用,因为 nginx 是最新的,而 brew reinstall nginx --with-passenger 只是重新安装 v5.0.21。
    • 是的,但这些说明不起作用。他们刚刚重新安装了 5.0.21。我会继续寻找,但感谢您为我指明正确的方向。
    • 但是您是否运行了 both 命令?您需要运行brew upgrade passenger nginx --with-passengerfirst,并且(仅当没有发布新的 Nginx 版本时)也运行brew reinstall nginx --with-passenger
    • 发现问题了!我必须先运行brew update 来更新本地缓存。在我这样做之后,一切都能够完美更新。
    【解决方案2】:

    你已经把它注释掉了,这意味着它是0。

    此选项有两个主要用例:

    1. 让dynamic process scaling 在 Node.js 和 Meteor 中工作 应用程序。将此选项设置为大约 单个进程执行的并发请求 开始退化。
    2. To make SSE and WebSockets work well in Ruby applications。设置这个 选项为 0。

    资源链接:

    1. passenger_force_max_concurrent_requests_per_process
    2. Dynamic scaling of Node.js application processes vs fixed process pool

    更新1:

    passenger_start_timeout 指定启动应用程序进程的超时时间。 如果应用程序进程在超时期限内未能启动,则会被 SIGKILL 强制终止,并记录错误。

    【讨论】:

    • 我知道它的作用,我也知道当它设置为 0 时会发生什么。我的问题是为什么它的 not 被注释掉时会崩溃?我正在尝试启用动态缩放,但我无法启动 nginx,因为它给了我一个 unknown directive 错误。
    • @thislooksfun 我已经更新了我的答案。请看一看。
    • 我已经更新了我的问题,希望它能让我的问题更清楚。
    猜你喜欢
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 2017-07-28
    • 2021-02-07
    • 2020-04-09
    • 2019-03-19
    相关资源
    最近更新 更多