3

我正在使用基于 Apache 的 ibm http 服务器。当我尝试将参数增加到ThreadsPerChild1000 以上时,http 服务器总是只启动 1000 个工作线程。以下是相关信息:

错误日志:

[Thu Jul 05 10:50:45 2012] [debug] mpm_winnt.c(564): Child 9040: 从父级检索到 2 个监听
器 [Thu Jul 05 10:50:45 2012] [notice] Child 9040: 获得了启动互斥锁.
[Thu Jul 05 10:50:45 2012] [notice] Child 9040: Starting 1000 worker threads
[Thu Jul 05 10:50:45 2012] [notice] Child 9040:启动线程监听端口 81。
[Thu Jul 05 10:50:45 2012] [notice] Child 9040:启动线程监听端口 80。

httpd.conf

<IfModule mpm_winnt.c>
  ThreadLimit 2048<br>
  ThreadsPerChild 2000
  MaxRequestsPerChild  0
</IfModule>

IHS 7.0.0.0 操作系统 winNT

顺便说一句,另一个问题ThreadsPerChild是一个 Apache 线程是否在这里处理一个客户端连接,或者一个线程可以处理多个客户端连接?

请帮帮我。

非常感谢

4

1 回答 1

2

关于 ThreadsPerChild 设置的限制,引自IBM HTTP Server Performance Tuning

在 64 位 Windows 操作系统上,每个实例限制为大约 2500 个 ThreadsPerChild。在 32 位 Windows 上,这个数字更接近 5000。这些数字并不是确切的限制,因为真正的限制是每个线程的固定启动内存成本 + 每个线程的最大运行时内存使用量的总和,这取决于配置和工作量。当运行时内存使用使进程地址空间超过 2GB 或 3GB 障碍时,提高 ThreadsPerChild 并接近这些限制可能会导致子进程崩溃。

值得注意的是,ThreadsPerChild 并不是调整 IHS 并发连接的唯一参数。您可以在以下链接中找到有关其他参数(如 maxClients)和调整方法的信息;

调整 IBM HTTP Server 以最大化与 WebSphere Application Server 的客户端连接数

于 2012-07-06T17:31:35.473 回答