我们有一个Sphinx安装(2.0.3)在3个EC2实例(目前是m3.large)的群集上运行。
目前我们的Sphinxconfiguration中有workers = threads和max_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的链接来拯救我的生命,对不起)
两个相关的问题:
query.log 。 是否有一个工具,我可以用来确定是否发生查询速度减慢(由于太多的并行查询),如果不是,查询CPU绑定或内存绑定(或者我应该看看其他一些值)?