![/var/lib/mongo 的预读设置为 4096KB](https://linux22.com/image/647553/%2Fvar%2Flib%2Fmongo%20%E7%9A%84%E9%A2%84%E8%AF%BB%E8%AE%BE%E7%BD%AE%E4%B8%BA%204096KB.png)
我正在尝试按照建议将 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
我已经编写了一个初始化脚本来为我设置/取消设置它: