了解和改善狮身人面像searchd内存使用情况

我的公司有一些服务器,我们致力于运行Sphinxsearch。 所有的CentOS 5都有大约48GB的内存,我们的searchd版本是1.11。 最近我一直在试图理解为什么Sphinx为它的常规索引使用如此less的可用内存(现在我们不使用RT索引)。 据Sphinx官方网站介绍 ,除了.spd和.spp文件以外,与索引相关的所有文件都存储在RAM中。 目前这对我们所有的指标来说都是14GG左右,可以很容易的放入RAM中。 但是,当我咨询htop的内存使用情况,它显示正在使用less于1.5GB! 有趣的是,即使vm.swappiness设置为0,也会报告交换正在使用。如果我停止search,交换将下降到0.(应该注意,交换的金额不会超过金额)我们已经configuration好了,所有的索引都是在启动时预先打开的(在我们的sphinx conf中preopen_indexes = 1)。

鉴于以上信息,我有两个问题:

  1. Sphinx如何处理这些索引中的数据,如果它不保存在内存中呢?
  2. 是否有可能强制狮身人面像保存更多的数据在内存中?

尝试mlock = 1并重新索引所有索引。

index index1 { source = main1 path = /ssd/sphinx/index.main charset_type = utf-8 docinfo = extern mlock = 1 } 

Sphinx如何处理这些索引中的数据,如果它不保存在内存中呢?

它可能会把它们记忆。 但主机操作系统,注意到他们没有被使用太多,所以把它们互换掉了。

build议看看确保你的swappiness真的被应用。

是否有可能强制狮身人面像保存更多的数据在内存中?

如果你有空余的记忆。 把索引放在RAM磁盘:)


如果你真的有足够的内存空间,反而关掉交换。 如果内存不足,可能会导致崩溃,但在服务器上发生这种情况听起来不太可能。