在LINUX系统中,如果有大量读请求,默认的请求队列或许应付不过来,我们可以
    动态调整请求队列数来提高效率,默认的请求队列数存放在/sys/block/xvda/queue/nr_requests 文件中,
    注意:/sys/block/xvda ,这里 xvda 写的是你自己的硬盘名,因我的是vps所以是xvda,有可能的参数是 sda hda….等等。
    如果你不清楚可以,fdisk -l查看一下自己的物理磁盘名称。
    [root@leda03 public_html]# fdisk -l
    Disk /dev/xvdd: 117 MB, 117549056 bytes
    255 heads, 63 sectors/track, 14 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Disk /dev/xvdd doesn’t contain a valid partition table
    Disk /dev/xvda: 21.4 GB, 21474836480 bytes
    255 heads, 63 sectors/track, 2610 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Device Boot Start End Blocks Id System
    /dev/xvda1 * 1 13 104391 83 Linux
    /dev/xvda2 14 2610 20860402+ 8e Linux LVM

    Centos系统
    image.jpeg
    查看磁盘的默认请求队列:
    # cat /sys/block/xvda/queue/nr_requests
    128
    默认请求队列数为:128。
    image.jpeg

    现在我们来测试请求一个1G大小的文件:
    # time dd if=/dev/zero of=test bs=1M count=1000
    1000+0 records in
    1000+0 records out
    1048576000 bytes (1.0 GB) copied, 60.2789 seconds, 17.4 MB/s
    real 1m0.553s
    user 0m0.043s
    sys 0m6.363s
    由此看出,共花了1分55秒,现在把 nr_requests 的 128 改成 512 再试下:
    # echo 512 > /sys/block/xvda/queue/nr_requests
    # cat /sys/block/hda/queue/nr_requests
    512
    image.jpeg
    # rm -f test
    # time dd if=/dev/zero of=test bs=1M count=1000
    1000+0 records in
    1000+0 records out
    1048576000 bytes (1.0 GB) copied, 28.298 seconds, 37.1 MB/s
    real 0m28.787s
    user 0m0.040s
    sys 0m5.982s
    同样大小的文件,改成 512 后只需要 28 秒钟,由此可以结论出,通过适当的调整
    nr_requests 参数可以大幅提升磁盘的吞吐量,缺点就是你要牺牲一定的内存。
    建议:通过适当的调整nr_requests 参数可以大幅提升磁盘的吞吐量,缺点就是你要牺牲一定的内存。但是这个牺牲的比例,目前 我还没有一个比较严格的数字,所以大家还是要慎重的去更改为好,最后先做一个压力测试,再去进行更改。当然如果你服务器的内存很足,就不必有此顾虑了。