我正在运行Sphinx 0.9.9版本(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而没有真正的错误消息。 即使我删除完整的索引并尝试创建一个新索引,也会发生同样的情况。如果我这样做,新创建的索引文件为空。
该系统现已运行数月,但该表的行数已从约1,100万增加至约2,400万。此外,它必须具有非常大的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 :(得分:0)
0.9.9现在真的很老了。从那时起,大量的错误修复和改进。
只是升级可能会解决您的问题。
但它也带给你 --print查询 这可能有用。
甚至--dump-rows - 但要确保你有一个很大的临时位置。在得到错误时拖延它可能会有所帮助。
要检查的另一件事是mysql服务器上的wait_timeout。也许在查询之间存在太长时间,即mysql正在终止连接