【问题标题】:Apache 2.4 ThreadsPerChild directive not updating number of workersApache 2.4 ThreadsPerChild 指令未更新工人数量
【发布时间】:2016-11-17 00:30:42
【问题描述】:

从 Apache 2.2 升级后,我正在尝试在 Debian 8.2 上配置我的新 Apache 2.4.10 实例。这次我使用的是 event_mpm 模块,从 mpm_worker 更改。

我已经设置好了所有的路由,似乎一切正常。但是我开始在日志中看到这个错误:

[Tue Nov 15 10:05:10.743107 2016] [mpm_event:error] [pid 12345:tid 12345] AH00485: scoreboard is full, not at MaxRequestWorkers

它不会一直发生,它每隔几个小时就会大量发生。 (我意识到这里有一个关于此的错误:https://bz.apache.org/bugzilla/show_bug.cgi?id=53555。但如果我没看错的话,更多的是关于挂起服务器,这不会发生在我身上。)

我不太了解这个错误,所以我检查了我的配置。看着它,我想我至少可以将我的 ThreadsPerChild 值更改为更高的值。

所以我的配置是这样的:

<IfModule mpm_event_module>
StartServers         3
MinSpareThreads      150
MaxSpareThreads      500
ThreadLimit          128
ThreadsPerChild      25
MaxRequestWorkers    1200
MaxRequestsPerChild  0

到这里:

<IfModule mpm_event_module>
StartServers         3
MinSpareThreads      150
MaxSpareThreads      500
ThreadLimit          128
ThreadsPerChild      75
MaxRequestWorkers    1200
MaxRequestsPerChild  0

我知道工人的数量是 StartServers * ThreadsPerChild (3 * 75 = 225)。但是,当我访问我的服务器状态页面时,它仍然被列为有 75 个工作人员,即我的旧值 25 * 3 = 75。

我已经重新加载了配置,重新启动了我的 Apache,我仍然在页面上看到这样的状态:

正在处理的 32 个请求 + 43 个空闲工作人员 = 75 (3 * 25)。 不应该是225吗?我错过了什么吗?

我肯定已经加载了 mpm_event 模块:

$ apache2ctl -V
  Server MPM:     event
  threaded:     yes (fixed thread count)
  forked:     yes (variable process count)

所以:

  1. 这个错误有什么可担心的吗?我可以通过提高我的 ThreadsPerChild 值来消除它吗?

  2. 为什么根据状态页面提高我的 ThreadsPerChild 值似乎无助于提高我的工作人员数量?

【问题讨论】:

    标签: apache


    【解决方案1】:
    1. 这个错误有什么可担心的吗?我可以通过提高我的 ThreadsPerChild 值来消除它吗?

    发生此错误是因为我的记分牌被填满了,因为我没有足够的工人来满足我的请求。我以为我在增加它们,但我没有(见 2),这就是为什么此错误消息的重复出现让我感到困惑。

    1. 为什么根据状态页面提高我的 ThreadsPerChild 值似乎无助于提高我的工作人员数量?

    我的问题是我在我的 apache2.conf 文件中定义了我的 mpm_event 模块设置,然后在该文件中我有这个:

    # Include module configuration:
    IncludeOptional mods-enabled/*.load
    IncludeOptional mods-enabled/*.conf
    

    这是加载默认文件:

    /etc/apache2/mods-enabled/mpm_event.conf
    

    所以这两个配置都被加载了,因为“IncludeOptional”声明稍后在 apache2.conf 文件中,它正在加载并用 mpm_event.conf 中定义的设置覆盖 apache2.conf 中的 mpm_event 设置。我的 apache2.conf 文件中的 mpm_event 定义从未被使用过。

    我只是删除了 apache2.conf 文件中的 mpm_event 配置,并将 /etc/apache2/conf-available/mpm_event.conf 文件更改为我想要的设置,重新启动了 apache 服务器,我的状态页面显示了新的更新配置.

    作为一个有用的附注,我使用mpm_info 模块解决了这个问题。我激活了它,像文档在我的一个虚拟主机中所说的那样对其进行了配置,然后访问了 URL。这样我就可以看到所有正在加载的配置,并且可以立即看到我的 mpm_event 来自不同的配置文件。

    【讨论】:

      猜你喜欢
      • 2013-09-18
      • 1970-01-01
      • 1970-01-01
      • 2016-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-25
      相关资源
      最近更新 更多