重建我们的MySQL数据库之一的Sphinx索引时出现问题。循环重建索引失败,系统继续使用旧的索引。数据库的大小在过去几个月里翻了一番,现在它包含了超过1000万行的表。在与重建狮身人面像索引失败
indexer --config our_config.conf --rotate --all
(由这里使用的UltraSphinx插件生成)狮身人面像指数的重建,我们得到的狮身人面像守护程序日志文件以下错误searchd.log发生在
WARNING: rotating index 'main': preread failed: failed to open
~/etc/sphinx//sphinx_index_main.new.spi: No such file or directory;
using old index
WARNING: rotating index 'main': preread failure reported
错误消息数据库越来越大,越来越频繁。完全索引现在需要大约1个半小时,索引文件一起大于1 GB。我们更新了狮身人面像版本从0.9.8.1到2.0.4来解决这个问题,但它仍然存在。该服务器具有约4 GB的内存,并且配置文件与
indexer {
mem_limit = 1024M
}
searchd {
read_timeout = 5
max_children = 300
log = ~/etc/sphinx/log/searchd.log
port = 3313
max_matches = 100000
query_log = ~/etc/sphinx/log/query.log
seamless_rotate = 1
pid_file = ~/etc/sphinx/log/searchd.pid
address = 127.0.0.1
}
..
开始有没有人一个想法如何可以解决问题?我猜似乎有某种索引大小限制与2 GB限制有关,这是某些文件系统上文件大小的带符号32位整数和最大值的最大值。我们在Ubuntu/Debian系统上使用的ext3文件系统允许最多16 GB的文件,但某些库可能会将文件大小限制在2 GB(请参阅here和here)。
是的,检查日志和输出总是值得推荐的。它说有些像“收集xxx文档,xxx MB”,但退出与上述错误(没有这样的文件或目录;使用旧的索引;旋转索引'x':预报失败报告)。 – 0x4a6f4672 2012-04-25 10:38:54
是否有足够的磁盘空间来容纳目标文件。通常需要1.3倍的指数大小。 – barryhunter 2012-04-25 10:53:03
df -h表示约9 GB是免费的。但它可能与大小限制有关,请参阅我在问题下面添加的文本。也许某种2GB/int32限制。 – 0x4a6f4672 2012-04-25 10:54:57