我最近购买了 HP ProLiant ML310e Gen8 v2 服务器,配备 8G RAM 和 4 个 HP 1TB 6G 7.2k rpm SATA(3.5 英寸)非热插拔 MDL HDD 磁盘。
令我惊讶的是,HP 没有为 RAID 控制器提供 Debian 驱动程序,因此我不得不使用软件 RAID。我安装了 Debian 及其自己的软件 RAID 和 RAID 级别 10。
安装后,我遇到了巨大的性能损失,看起来我设法将其追踪到 MySQL 操作。
服务器主要用作 Apache2 服务器,带有 MySQL 数据库。
这是我运行的用于测量服务器和台式电脑的 SQL 操作时间的简单脚本。
$sql = "SELECT id FROM c_event";
$events = $db->getall($sql);
foreach($events as $item)
$db->query("INSERT table1 set id = {$item['id']}");
foreach($events as $item)
$db->query("DELETE FROM table1 WHERE id = {$item['id']}");
我将结果与配备 Intel Q6600、4GB 内存和 120G SSD 磁盘的台式电脑进行了比较。
- 桌面在 45 秒内完成
- 服务器耗时 2 小时 46 分钟 18 秒。
差异实在太大了。有什么建议吗?
对于我来说,服务器 raid 性能似乎还可以,因为磁盘不是质量最好的。
hdparm -t /dev/md1
/dev/md1:
Timing buffered disk reads: 1024 MB in 3.00 seconds = 341.04 MB/sec
编辑:
IOSTAT:测试期间在问题服务器上:
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 43.00 0.00 256.00 0 512
sdb 43.00 0.00 256.00 0 512
sdc 54.00 0.00 262.00 0 524
sdd 54.50 0.00 266.00 0 532
md0 0.00 0.00 0.00 0 0
md1 129.00 0.00 520.00 0 1040
在具有 15k SAS 磁盘的服务器上
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 4819.50 0.00 24240.00 0 48480
答案1
由于您绕过了硬件 RAID 功能,因此 RAID 控制器上没有写入缓存。这是您的主要问题...
人们购买这些 HP Gen8“e”版本而不是“p”版本。“e”服务器对操作系统的支持有限,并且功能HP 动态智能阵列 RAID 控制器,仅附带二进制驱动程序...如果您的操作系统超出了这些控制器的支持范围,您唯一的办法就是使用软件 RAID 或购买合适的 PCIe RAID 控制器。
您的性能将受到较慢的 7,200 RPM 磁盘的限制,但硬件 RAID 情况将产生更大的影响按照你的规模而不是将磁盘更改为企业 SAS。
答案2
差异实在太大了。
不,如果您有大型数据库,那就没问题。看......
120G SSD磁盘。
大约是 60,000 IOPS
4 惠普 1TB 6G 7.2k rpm SATA
那大约是 - hm - 300 IOPS。如果都是只读的,而且控制器真的很好,也许会多一点。
基本上,基于 SSD 的笔记本电脑比只注重大小而不注重速度的糟糕磁盘布局要好得多。而且数据库喜欢磁盘速度。
你不应该买那台机器来当作数据库服务器。就这么简单。
现在:
对于我来说,服务器 raid 性能似乎还可以,因为磁盘不是质量最好的。
哈哈哈。是的。测量线性速度是无用的。你不如做一个适当的 IOPS 测量并比较一下。是的,磁盘对于单线程线性数据访问是没问题的。坏消息:这不是服务器上发生的事情,也不是数据库系统上发生的事情。