【树莓派笔记】磁盘读写速度测试

在树莓派 4B 上跑一个 PHP + MySQL 的程序,安装过程需要创建数据库并写入 demo 数据,更新数据库这一步总是遇到 504 Gateway Timeout 错误,一开始怀疑是脚本执行时间不够,将 max_execution_time 参数调整到 300,依然 504。后续又折腾了 Nginx 的 fastcgi 相关参数,依然没有解决。

	fastcgi_connect_timeout 300s;
	fastcgi_send_timeout 300s;
	fastcgi_read_timeout 300s;

由于 iowait 值很高,于是开始怀疑是树莓派的 IO 性能问题,将 MySQL 的 datadir 从优盘移到了移动硬盘上,再次尝试,终于运行成功,没有了 504 错误。

接下来用 dd 测试一下树莓派上各种类型的存储的读写速度。先看一下硬盘情况,一个 TF 卡,一个优盘,一个移动硬盘,优盘移动硬盘均使用 USB 3.0 接口。

root@ubuntu:~# inxi -D
Drives:    Local Storage: total: 509.86 GiB used: 460.63 GiB (90.3%) 
           ID-1: /dev/mmcblk0 model: SC16G size: 14.84 GiB 
           ID-2: /dev/sda type: USB vendor: Western Digital model: WD My Passport 0748 size: 465.73 GiB 
           ID-3: /dev/sdb type: USB model: aigo U385 size: 29.30 GiB 

挂载情况:

root@ubuntu:~# lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 465.7G  0 disk 
└─sda1        8:1    0 465.7G  0 part /nas
sdb           8:16   1  29.3G  0 disk 
└─sdb1        8:17   1  29.3G  0 part /data

测试写入速度:

root@ubuntu:/data# dd if=/dev/zero of=/data/test.db bs=8k count=50000 conv=fdatasync
50000+0 records in
50000+0 records out
409600000 bytes (410 MB, 391 MiB) copied, 39.2218 s, 10.4 MB/s
root@ubuntu:/data# 
root@ubuntu:/data# dd if=/dev/zero of=/nas/test.db bs=8k count=50000 conv=fdatasync
50000+0 records in
50000+0 records out
409600000 bytes (410 MB, 391 MiB) copied, 10.0974 s, 40.6 MB/s
root@ubuntu:/data# 
root@ubuntu:/data# dd if=/dev/zero of=/root/test.db bs=8k count=50000 conv=fdatasync
50000+0 records in
50000+0 records out
409600000 bytes (410 MB, 391 MiB) copied, 35.1674 s, 11.6 MB/s

可以看到移动硬盘是优盘的 4 倍。

测试读取速度:

root@ubuntu:~# dd if=/dev/sda1 of=/dev/null bs=8k count=50000
50000+0 records in
50000+0 records out
409600000 bytes (410 MB, 391 MiB) copied, 4.80488 s, 85.2 MB/s
root@ubuntu:~# dd if=/dev/sdb1 of=/dev/null bs=8k count=50000
50000+0 records in
50000+0 records out
409600000 bytes (410 MB, 391 MiB) copied, 5.14865 s, 79.6 MB/s
root@ubuntu:~# dd if=/dev/mmcblk0p2 of=/dev/null bs=8k count=50000
50000+0 records in
50000+0 records out
409600000 bytes (410 MB, 391 MiB) copied, 10.6999 s, 38.3 MB/s

可见优盘移动硬盘的读取速度没差多少, TF 卡的读取速度慢很多。

因此,运行需要写入的程序时,最好用移动硬盘来提升性能。PHP 程序目录,MySQL 数据目录,Docker 数据目录都应该放到移动硬盘里。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注