我尝试将 Apache 服务器配置为最多使用 120 个线程,每个线程使用一个 (Oracle) SQL 连接。我通过以下设置实现了此目的:
MaxClients 120
在 httpd.conf 文件中。我还设置了:
oci8.max_persistent = 1
在 php.ini 文件中。
但是,我发现线程/连接的数量偶尔会超过 120。我是否遗漏了什么?
谢谢。
答案1
正如 bindbn 告诉你的那样,你应该检查 MPM
# apache2 -V | grep "Server MPM"
Server MPM: XXXX
当你回答他时,你正在使用“prefork”,它的配置与worker非常相似:
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
MaxClients 150
MaxRequestsPerChild 1000
</IfModule>
更多信息:
答案2
检查 MPM:
# apache2 -V | grep "Server MPM"
Server MPM: Worker
检查正确的部分是否改变:
<IfModule mpm_worker_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 60
ThreadLimit 55
ThreadsPerChild 25
MaxClients 120
MaxRequestsPerChild 0
</IfModule>