我在工作MPMconfigurationtestingApache,并试图了解它。 工作人员configuration如下所示。
<IfModule mpm_worker_module> ServerLimit 256 ThreadLimit 50 StartServers 10 MinSpareThreads 20 MaxSpareThreads 30 ThreadsPerChild 3 MaxRequestWorkers 50 MaxConnectionsPerChild 0 </IfModule>
按照这个设置,当apache启动时,应该有10个subprocess,每个subprocess可以有3个线程。
但是当我列出进程树时,我看到每个subprocess有11个subprocess和4个线程。 第一个subprocess没有任何线程。 任何人都可以解释吗?
这是pstree -lpg的输出
├─httpd(1795,1795)─┬─httpd(1796,1795) │ ├─httpd(1797,1795)─┬─{httpd}(1829,1795) │ │ ├─{httpd}(1830,1795) │ │ ├─{httpd}(1831,1795) │ │ └─{httpd}(1832,1795) │ ├─httpd(1798,1795)─┬─{httpd}(1820,1795) │ │ ├─{httpd}(1822,1795) │ │ ├─{httpd}(1823,1795) │ │ └─{httpd}(1824,1795) │ ├─httpd(1799,1795)─┬─{httpd}(1837,1795) │ │ ├─{httpd}(1838,1795) │ │ ├─{httpd}(1839,1795) │ │ └─{httpd}(1840,1795) │ ├─httpd(1800,1795)─┬─{httpd}(1841,1795) │ │ ├─{httpd}(1842,1795) │ │ ├─{httpd}(1843,1795) │ │ └─{httpd}(1844,1795) │ ├─httpd(1801,1795)─┬─{httpd}(1825,1795) │ │ ├─{httpd}(1826,1795) │ │ ├─{httpd}(1827,1795) │ │ └─{httpd}(1828,1795) │ ├─httpd(1802,1795)─┬─{httpd}(1814,1795) │ │ ├─{httpd}(1815,1795) │ │ ├─{httpd}(1816,1795) │ │ └─{httpd}(1817,1795) │ ├─httpd(1803,1795)─┬─{httpd}(1833,1795) │ │ ├─{httpd}(1834,1795) │ │ ├─{httpd}(1835,1795) │ │ └─{httpd}(1836,1795) │ ├─httpd(1805,1795)─┬─{httpd}(1849,1795) │ │ ├─{httpd}(1850,1795) │ │ ├─{httpd}(1851,1795) │ │ └─{httpd}(1852,1795) │ ├─httpd(1806,1795)─┬─{httpd}(1845,1795) │ │ ├─{httpd}(1846,1795) │ │ ├─{httpd}(1847,1795) │ │ └─{httpd}(1848,1795) │ └─httpd(1808,1795)─┬─{httpd}(1853,1795) │ ├─{httpd}(1854,1795) │ ├─{httpd}(1855,1795) │ └─{httpd}(1856,1795)
如果我使用mod_status进行检查,则有30个线程是正确的。 但为什么在进程树中有额外的subprocess和线程呢?