10

我在启动 MongoDB shell 时收到此警告:

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

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

Wed Mar 20 22:40:49.850 [initandlisten] ** 我们建议将其设置为 256KB(512 个扇区)或更小

3 月 20 日星期三 22:40:49.850 [initandlisten] ** http://dochub.mongodb.org/core/readahead

我用过:

df /数据

要查找驱动器的位置,我的数据已安装并随后使用:

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

将预读设置为指定的 256。我已经确认这适用于:

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

但是,我在启动 shell 时仍然遇到同样的错误?

更新

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

更新 2

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

更新 3

这是 MongoDB 主实例的 blockdev --report

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

这是 MongoDB 的辅助实例的 blockdev --report

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

这是 MongoDB Arbiter 实例的 blockdev --report

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

5 回答 5

8

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

就我而言,我只是弄清楚了我的逻辑驱动器是什么blockdev --report,然后我blockdev --setra在 init.d 中 MongoDB 启动脚本的“开始”部分中的每个驱动器上运行。

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

于 2013-07-22T21:20:29.747 回答
4

你可以这样做:

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
于 2014-03-30T23:22:59.010 回答
4

将内部预读值修改为 128 on/usr/lib/tuned/throughput-performance/tuned.conf

在centos7上

于 2016-04-06T18:54:40.783 回答
3

如果数据文件在/data但这些文件不在指定的设备上,则设置正确的预读/dev/mapper/vg0-data将无效。

blockdev命令应针对设备运行/数据从以下位置安装:sudo blockdev --setra 256 /dev/<dev where data lives>

于 2013-05-23T14:21:20.973 回答
-1

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

预读初始化脚本

于 2015-03-04T01:00:29.500 回答