有没有办法在sphinxsearch上预启动线程

时间:2016-09-02 10:06:43

标签: multithreading sphinx

我们有大型的狮身人面像分布式集群,
单前端分布式索引,有3个后端服务器,每个服务器都有一个小的本地分布式索引。

有时,在高流量高峰时,在后端服务器上,我们看到平均负载高达80。

与此同时,我可以看到sphinx hawe产生150 - 200个线程,很快下降到50,然后它们又回到150 - 200,然后又回到50,依此类推。

有没有办法预先" prefork" /预启动那些线程?例如类似于apache的MinSpareServers。

事实上我们使用专用硬件,所以如果sphinx在空闲时使用更多内存,我们就不会有问题。

在后端服务器上,我们正在使用实时索引,我们无法使用prefork模型。

我们拥有完全的root权限,因此我们也可以调整linux系统设置。

1 个答案:

答案 0 :(得分:2)

仅在2.3 worker = thread_pool在启动时创建固定数量的工作线程,这是1.5 *检测到的核心或max_children指令。线程放在池下。传入连接由单独的线程处理,这些线程将查询分配给工作池。 old workers = threads为每个查询创建一个线程。