我们最近从带有prefork的旧Apache切换到带有worker的2.4.9,配置为
ServerLimit 16
StartServers 2
MaxRequestWorkers 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
同时我们从mod_jk 1.2.37切换到1.2.40。现在我们偶尔得到:
20140625 18:04:29 [32187:139712338515728] [warn] ajp_get_endpoint::jk_ajp_common.c (3229): Unable to get the free endpoint for worker abc from 1 slots
20140625 18:04:29 [32187:139712338515728] [error] jk_handler::mod_jk.c (2744): Could not get endpoint for worker=abc
20140625 18:04:29 [32187:139712338515728] [info] jk_handler::mod_jk.c (2806): Service error=0 for worker=abc
20140625 18:04:29 500 "/abc/search?xyz=2" 534b abc:- 0.200348s
1个插槽是什么? isn< mod_jk应该动态配置自己以匹配Apache吗?我发现在" high"加载(在大约20个同时请求之后),更可能发生更多ThreadsPerChild
。鉴于ThreadsPerChild 1
它似乎根本没有发生,有效地将我减少到相当于prefork。
我是否在监督某些事情或者mod_jk在1.2.40中获取了Apache参数?
答案 0 :(得分:1)
connection_pool_size
的文档说:
JK将自动为Apache Web服务器发现此号码 并将池大小设置为此值。
事实证明这不是真的。它默认为1
。将此设置为与ThreadsPerChild
相同的值会使问题消失。