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

is there a way to pre-start threads on sphinxsearch

我们有大型 sphinx 分布式集群,
单个前端分布式索引,有 3 个后端服务器,每个后端服务器都有小型本地分布式索引。

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

同时,我可以看到 sphinx hawe 产生了 150 - 200 个线程,然后迅速下降到 50,然后又回到 150 - 200,然后又回到 50,依此类推。

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

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

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

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

仅在 2.3 中 workers=thread_pool 在启动时创建固定数量的工作线程,即 1.5*detected cores 或 max_children 指令。线程放在池下。传入连接由单独的线程处理,该线程将查询分配给工作池。旧的 workers=threads 为每个查询创建一个线程。