ThreadStackSize 指令
描述: | 处理客户端连接的线程使用的堆栈大小(以字节为单位) |
---|---|
句法: | ThreadStackSize size |
默认: | 65536 on NetWare; varies on other operating systems |
内容: | 服务器配置 |
状态: | MPM |
模组: | event ,worker ,mpm_winnt ,mpm_netware ,mpmt_os2 |
兼容性: | 在Apache HTTP Server 2.1和更高版本中可用 |
该ThreadStackSize
指令设置用于处理客户端连接并调用模块以帮助处理这些连接的线程堆栈(用于自动数据)的大小。在大多数情况下,操作系统默认的堆栈大小是合理的,但是在某些情况下可能需要对其进行调整:
- 在具有相对较小的默认线程堆栈大小的平台(例如,HP-UX)上,当使用一些第三方模块使用大量自动数据存储时,Apache httpd可能会崩溃。这些相同的模块可能在其他默认线程堆栈大小较大的平台上运行良好。通过设置
ThreadStackSize
为高于操作系统默认值的值,可以解决此类崩溃的问题。仅当第三方模块的提供程序指定需要此调整,或者诊断为Apache httpd崩溃表明线程堆栈大小过小时,才需要进行这种调整。 - 在默认线程堆栈大小明显大于Web服务器配置所需平台的平台上,如果将其
ThreadStackSize
设置为小于操作系统默认值的值,则每个子进程可以实现更多数量的线程。此类调整仅应在允许执行完整的Web服务器处理的测试环境中进行,因为不经常出现的请求需要更多的堆栈来处理。所需的最小堆栈大小在很大程度上取决于所使用的模块,但是Web服务器配置中的任何更改都可能使当前ThreadStackSize
设置无效。 - 在Linux上,此指令只能用于增加默认堆栈大小,因为基础系统调用使用该值作为最小堆栈大小。(通常很大)软限制
ulimit -s
(如果没有限制,则为 8MB)用作默认堆栈大小。
ThreadStackSize
除非每个子进程需要大量线程。在某些平台(包括Linux)上,设置128000已经太低,导致某些常用模块崩溃。