我如何为狮身人面像select适当的max_children值?

我们有一个Sphinx安装(2.0.3)在3个EC2实例(目前是m3.large)的群集上运行。

目前我们的Sphinxconfiguration中有workers = threadsmax_children = 30 (每个框中都是相同的)。 我们定期收到可怕的“临时search错误:服务器超时,重试一秒钟”。 我们的实例徘徊在5%左右的CPU利用率。 一些顶级输出示例:

 top - 19:51:56 up 22:15, 1 user, load average: 0.08, 0.04, 0.01 Tasks: 82 total, 2 running, 80 sleeping, 0 stopped, 0 zombie Cpu(s): 1.0%us, 0.0%sy, 0.0%ni, 98.5%id, 0.3%wa, 0.0%hi, 0.0%si, 0.2%st Mem: 7872040k total, 2911920k used, 4960120k free, 245168k buffers Swap: 0k total, 0k used, 0k free, 2190992k cached 

所有的狮身人面像文件似乎说关于设置max_children是它是“有用的控制服务器负载” 。 当search时,我发现一个论坛post指出,设置它太高或太低都可能导致“服务器超时” – 我认为前者是因为个别查询饿死 – 但没有进一步的提示select正确的水平。 (我找不到这个post的链接来拯救我的生命,对不起)

两个相关的问题:

  • 我是否认为低CPUbuild议max_children可以/应该高于30?
  • 我怎样才能find最佳的数字(即,[通常]不会导致查询速度下降的最大数量的孩子)? 我不完全确定什么样的信息Sphinx超越query.log 。 是否有一个工具,我可以用来确定是否发生查询速度减慢(由于太多的并行查询),如果不是,查询CPU绑定或内存绑定(或者我应该看看其他一些值)?