我们有大型的狮身人面像分布式集群,
单前端分布式索引,有3个后端服务器,每个服务器都有一个小的本地分布式索引。
有时,在高流量高峰时,在后端服务器上,我们看到平均负载高达80。
与此同时,我可以看到sphinx hawe产生150 - 200个线程,很快下降到50,然后它们又回到150 - 200,然后又回到50,依此类推。
有没有办法预先" prefork" /预启动那些线程?例如类似于apache的MinSpareServers。
事实上我们使用专用硬件,所以如果sphinx在空闲时使用更多内存,我们就不会有问题。
在后端服务器上,我们正在使用实时索引,我们无法使用prefork模型。我们拥有完全的root权限,因此我们也可以调整linux系统设置。
答案 0 :(得分:2)
仅在2.3 worker = thread_pool在启动时创建固定数量的工作线程,这是1.5 *检测到的核心或max_children指令。线程放在池下。传入连接由单独的线程处理,这些线程将查询分配给工作池。 old workers = threads为每个查询创建一个线程。