MongoDB Readahead警告

我在启动我的MongoDBshell时收到这个警告:

3月20日星期三22:40:49.850 [initandlisten]

星期三三月20 22:40:49.850 [initandlisten] **警告:/ data的预读设置为2048KB

3月20日星期三22:40:49.850 [initandlisten] **我们build议将它设置为256KB(512个扇区)或更less

Wed Mar 20 22:40:49.850 [initandlisten] ** http://dochub.mongodb.org/core/readahead

我用过:

df / data

要find驱动器的位置,我的数据被安装并随后使用:

sudo blockdev –setra 256 / dev / mapper / vg0-data

将readahead设置为指定的256。 我已经证实这与以下工作:

sudo blockdev –getra / dev / mapper / vg0-data

我仍然得到同样的错误,当启动我的shell?

UPDATE

我已经重新启动了mongodb服务器实例,并且仍然收到此错误。

更新2

我的linux服务器托pipe在AWS上,因此使用虚拟卷。 我已经将所有这些卷的readahead值设置为256,仍然收到此错误。

更新3

这是一个blockdev – MongoDB主实例的报告

RO RA SSZ BSZ StartSec Size Device rw 256 512 4096 0 8589934592 /dev/xvda1 rw 256 512 4096 0 10737418240 /dev/xvdh8 rw 256 512 4096 0 10737418240 /dev/xvdh7 rw 256 512 4096 0 10737418240 /dev/xvdh6 rw 256 512 4096 0 10737418240 /dev/xvdh5 rw 256 512 4096 0 10737418240 /dev/xvdh4 rw 256 512 4096 0 10737418240 /dev/xvdh3 rw 256 512 4096 0 10737418240 /dev/xvdh2 rw 256 512 4096 0 10737418240 /dev/xvdh1 rw 4096 512 4096 0 42944430080 /dev/md127 rw 4096 512 4096 0 38646317056 /dev/dm-0 rw 4096 512 4096 0 2143289344 /dev/dm-1 rw 4096 512 4096 0 2143289344 /dev/dm-2 

这是一个blockdev – MongoDB的辅助实例的报告

 RO RA SSZ BSZ StartSec Size Device rw 256 512 4096 0 8589934592 /dev/xvda1 rw 256 512 4096 0 10737418240 /dev/xvdh8 rw 256 512 4096 0 10737418240 /dev/xvdh7 rw 256 512 4096 0 10737418240 /dev/xvdh6 rw 256 512 4096 0 10737418240 /dev/xvdh5 rw 256 512 4096 0 10737418240 /dev/xvdh4 rw 256 512 4096 0 10737418240 /dev/xvdh3 rw 256 512 4096 0 10737418240 /dev/xvdh2 rw 256 512 4096 0 10737418240 /dev/xvdh1 rw 4096 512 4096 0 42944430080 /dev/md127 rw 4096 512 4096 0 38646317056 /dev/dm-0 rw 4096 512 4096 0 2143289344 /dev/dm-1 rw 4096 512 4096 0 2143289344 /dev/dm-2 

这是一个blockdev – MongoDB Arbiter实例的报告

 RO RA SSZ BSZ StartSec Size Device rw 256 512 4096 0 8589934592 /dev/xvda1 

答案是在启动脚本中运行blockdev --setra 。 每次系统重新启动时,预读值将恢复为默认值。

在我的情况下,我只是想出我的逻辑驱动器是用blockdev --report ,然后在init.d的MongoDB启动脚本的“start”部分的每个驱动器上运行blockdev --setra –setra。

希望这可以帮助其他人有类似的问题。

你可以这样做:

 echo 'ACTION=="add", KERNEL=="xvdb", ATTR{bdi/read_ahead_kb}="64"' | sudo tee -a /etc/udev/rules.d/85-ebs.rules echo 'ACTION=="add", KERNEL=="xvdc", ATTR{bdi/read_ahead_kb}="64"' | sudo tee -a /etc/udev/rules.d/85-ebs.rules echo 'ACTION=="add", KERNEL=="xvdd", ATTR{bdi/read_ahead_kb}="64"' | sudo tee -a /etc/udev/rules.d/85-ebs.rules echo 'ACTION=="add", KERNEL=="xvde", ATTR{bdi/read_ahead_kb}="64"' | sudo tee -a /etc/udev/rules.d/85-ebs.rules echo 'ACTION=="add", KERNEL=="dm-0", ATTR{bdi/read_ahead_kb}="64"' | sudo tee -a /etc/udev/rules.d/85-ebs.rules echo 'ACTION=="add", KERNEL=="dm-1", ATTR{bdi/read_ahead_kb}="64"' | sudo tee -a /etc/udev/rules.d/85-ebs.rules echo 'ACTION=="add", KERNEL=="dm-2", ATTR{bdi/read_ahead_kb}="64"' | sudo tee -a /etc/udev/rules.d/85-ebs.rules echo 'ACTION=="add", KERNEL=="md127", ATTR{bdi/read_ahead_kb}="64"' | sudo tee -a /etc/udev/rules.d/85-ebs.rules 

KERNEL ==“”是你的硬盘设备

然后重新启动一切将被正确设置

 rw 256 512 4096 0 42949672960 /dev/xvda1 rw 128 512 4096 0 214748364800 /dev/xvdc rw 128 512 4096 0 214748364800 /dev/xvde rw 128 512 4096 0 214748364800 /dev/xvdd rw 128 512 4096 0 214748364800 /dev/xvdb rw 128 512 4096 0 429227769856 /dev/md127 rw 128 512 4096 0 343379279872 /dev/dm-0 rw 128 512 4096 0 42920312832 /dev/dm-1 rw 128 512 4096 0 42920312832 /dev/dm-2 

如果数据文件在/data但这些文件在指定的设备上没有,则在/dev/mapper/vg0-data上设置正确的读取将不起作用。

应该对设备运行sudo blockdev --setra 256 /dev/<dev where data lives> /数据从以下位置挂载: sudo blockdev --setra 256 /dev/<dev where data lives>

/usr/lib/tuned/throughput-performance/tuned.conf readahead值修改为128

在centos7上

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

readahead initscript