将/ var / lib / mongo的readahead设置为4096KB

我试图按照build议设置mongo 256或更低的readahead,我查看了任何指导的文档 ,我发现这个:

Ensure that readahead settings for the block devices that store the database files are appropriate. For random access use patterns, set low readahead values. A readahead of 32 (16kb) often works well. For a standard block device, you can run sudo blockdev --report to get the readahead settings and sudo blockdev --setra <value> <device> to change the readahead settings. Refer to your specific operating system manual for more information. 

当我做一个sudo blockdev – 报告我得到:

 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有关?

根据您列出的大小,可能是/dev/sdb ,但是您可以通过运行df -h来find。 我将我的数据保存在/data ,这里是我的相关输出:

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

在我的情况下,这意味着我应该改变为readahead的是/dev/sdc1 。 找出你保存你的数据的地方,然后找出对应的块设备,然后在该设备上设置readahead。 在我的情况下:

 sudo blockdev --setra 256 /dev/sdc 

要坚持重新启动,您需要将此命令或类似命令添加到启动脚本(如rc.local),或者将其放入MongoDB初始化脚本中,以确保在启动MongoDB过程之前将其设置(readahead只能被读取一次在启动过程中,因此需要重新启动过程来影响更改)。

我写了一个init脚本来为我设置/取消设置:

readahead initscript