我正在运行Sphinx 0.9.9-release(r2117)。
运行索引器(从MySQL表读取数据)时出现以下错误:
indexing index 'main'...
ERROR: index 'main': ., 888.4 MB
total 3629180 docs, 888448551 bytes
total 170.437 sec, 5212749 bytes/sec, 21293.30 docs/sec
如您所见,索引器仅在888.4 MB处停止,而没有真正的错误消息。
即使删除完整的索引并尝试创建一个新索引,也会发生同样的情况。如果这样做,则新创建的索引文件为空。
该系统已经工作了几个月,但表的行数已从约1100万增加到约2400万。此外,它必须具有非常大的id差距,因为最小id为1,最大id为> 60亿。
我怀疑MySQL可能有问题,因此我创建了一个小脚本来执行所有“分页”查询,该脚本应在索引期间由Sphinx执行:
SELECT ... FROM ... WHERE id >= $start AND id <= $end
该脚本对alle id范围执行了所有查询,而没有返回错误。
一些可能相关的Sphinx配置详细信息:
sql_query_range = SELECT MIN(id), MAX(id) FROM offer
sql_range_step = 10240
SELECT o.id, ....
FROM offer o \
LEFT JOIN customer c ON c.id = o.customer_id \
WHERE ... AND o.id >= $start AND o.id <= $end AND o.last_update <= (SELECT last_full_index FROM index_update WHERE name = 'default')
有什么方法可以增加索引器的详细程度吗?
有什么想法可以解决这个问题吗?
最佳答案
0.9.9现在真的很旧了。从那时起,许多错误修复和改进。
只需升级就可以很好地解决您的问题。
但这也带给你
-打印查询
这可能是有用的。
甚至--dump-rows-但要确保您在临时位置上放置较大的位置。遇到错误时尾随它可能会有所帮助。
要检查的另一件事是mysql服务器上的wait_timeout。也许查询之间的时间太长了,mysql正在终止连接