0

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

有什么方法可以增加索引器的详细程度吗?

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

4

1 回答 1

0

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

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

但它也为您带来了可能有用的 --print-queries。

甚至 --dump-rows - 但请确保您有一个很大的临时位置来放置它。出现错误时拖尾它可能会有所帮助。

要检查的另一件事是您的 mysql 服务器上的 wait_timeout。也许查询之间的时间太长了,mysql正在杀死连接

于 2012-08-28T11:18:00.610 回答