/var/lib/mongo 的预读设置为 4096KB

/var/lib/mongo 的预读设置为 4096KB

我正在尝试按照建议将 mongo 的预读设置为 256 或更少,我查看了文档 寻求任何指导,我发现了这一点:

确保存储数据库文件的块设备的预读设置合适。对于随机访问使用模式,请设置较低的预读值。预读 32(16kb)通常效果很好。对于标准块设备,您可以运行sudo blockdev --report以获取预读设置并sudo blockdev --setra <value> <device> 更改预读设置。有关更多信息,请参阅特定操作系统手册。

当我这样做时,sudo blockdev --report我得到:

rw  8192   512  4096          0     32212254720   /dev/sda
rw  8192   512  4096       2048     31162630144   /dev/sda1
rw  8192   512  4096   60866560      1048576000   /dev/sda2
rw  8192   512  4096          0     75161927680   /dev/sdb
rw  8192   512  4096       2048     75159830528   /dev/sdb1

我怎么知道哪一个与mongo相关?

答案1

它可能/dev/sdb给出了您列出的大小,但您可以通过运行来找出答案df -h。我保存了我的数据/data,这是我的相关输出:

> df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1        70G   18G   49G  27% /
/dev/sdc1        932G  682G  250G  74% /data

在我的例子中,这意味着我应该为预读修改的是/dev/sdc1。找出你保存数据的位置,然后找出与哪个块设备相对应的位置,然后在该设备上设置预读。在我的例子中:

sudo blockdev --setra 256 /dev/sdc

为了在重启后仍然有效,您需要添加此命令或类似于 rc.local 的启动脚本,或者将其放入您的 MongoDB 初始化脚本中,以确保在 MongoDB 进程启动之前设置它(进程在启动时只读取一次 readahead,因此需要重新启动进程才能影响更改)。

答案2

我已经编写了一个初始化脚本来为我设置/取消设置它:

预读启动脚本

相关内容