Sphinx:indexer显示空错误消息

时间:2012-08-28 10:56:08

标签: mysql linux sphinx

我正在运行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')

有没有办法增加索引器的详细程度?

我有什么想法可以缩小问题范围?

1 个答案:

答案 0 :(得分:0)

0.9.9现在真的很老了。从那时起,大量的错误修复和改进。

只是升级可能会解决您的问题。

但它也带给你 --print查询 这可能有用。

甚至--dump-rows - 但要确保你有一个很大的临时位置。在得到错误时拖延它可能会有所帮助。

要检查的另一件事是mysql服务器上的wait_timeout。也许在查询之间存在太长时间,即mysql正在终止连接