sphinx 分布式搜索出现warning:send() failed : 32: broken pipe,


情况是这样的,我用的是debian系统,coreseek3.2,网站上有四个索引,之前用local设置四个索引,

所以搜索时按顺序搜索,有时会出现超时现象,但是用Query()函数还是能获得一部分结果。

但是现在我用两个硬盘分别负载两个索引,分布式索引弄成
agent = localhost:9312:index1,index2
agent = localhost:9312:index3,index4

两种情况都有设置SetMaxQueryTime(2000),即两秒就超时返回。用的是python api

这样子设置后搜索简单的词时就返回正确结果,但是搜索比较复杂,超时的话

Query()会返回None,然后日志文件中记录warning:send() failed : 32: broken pipe,

----------------------------------------------------

解决方法:
      经过分析和尝试,发现在分布式索引上面要重新设置agent_query_timeout(默认是3秒)
这个数值要大于SetMaxQueryTime(2000)的总和。
     例如:如果有agent = localhost:9312:index1,index2,而且搜索时设置SetMaxQueryTime(2000),
那么在相当于在这台主机上面最大的搜索时间是4秒(2+2=4),那么在索引配置文件上面的
agent_query_timeout就要设置成大于4秒。这样就解决这个问题了。

你可能感兴趣的:(sphinx)