快速、强劲且廉价:不到1000美元即可获得性能足够出色的小型企业数据库服务器
(c) Alexey Kovyazin, IBSurgeon,2017年9月21日(最后更新 - 2017年9月29日)
如果你准备好花很多$$$,获得一台强大的服务器是很容易的:有戴尔、惠普等领先供应商,以及许多不太知名的硬件公司,他们会很乐意卖给你一台强大的机器(通常,交货时间为4-6周)。
然而,资金总是一个问题,尤其是对于小型企业和初创公司来说,因此对“足够好”的廉价解决方案有巨大需求。本文介绍了为小型企业构建具有足够性能的“足够好”数据库服务器的实用方法。它还包含计算和我们推荐的具体产品的链接。
我们公司(IBSurgeon)为Firebird数据库提供数据库咨询和护理服务,我们看到许多类型的服务器(或者更确切地说,用作服务器的计算机)。大型客户使用高端配置,配备基于SSD的SAN、350+Gb RAM和双顶级Xeon处理器,但中小型企业客户使用性能较低的机器,因为他们不需要太多计算能力,也没有很多钱。
我们注意到,许多服务器实际上是普通工作站,而最有趣的是,它们年复一年地稳定运行。有一些非常奇特的情况,比如在配备2Gb RAM的计算机上运行Windows XP(这台计算机是2002年制造的!),但大多数只是“足够好”的自组装硬件解决方案。
当然,这是一个统计问题,没有人会推荐使用工作站作为服务器,但问题是:稳定性和费用之间的平衡在哪里?使用廉价的自行组装服务器在性价比方面是一个好方法吗?用1000美元我们能得到什么?与廉价硬件相关的风险是什么?
谁会对低于1000美元的数据库服务器感兴趣?
让我们考虑以下情况:一个办公室有20-25名员工,人们每周工作5天,每天7小时,数据库大小约为50Gb。这是小型企业的典型情况,他们使用某种ERP或CRM或特定应用程序(例如,牙科诊所自动化系统)用于基于Firebird的小型企业应用。
让我们想象一下,这家公司并不富裕,他们希望在尽可能节省的同时,不失去可靠性,以达到足够好的性能。公司中的负责人明白所有硬件迟早都会出故障,并希望降低相关风险。
对于这种规模和负载的Firebird数据库,他们需要什么样的服务器?根据Firebird硬件指南,数据库最关键的资源是磁盘IO,其次是RAM,最后是CPU(有趣的是,当中小型企业客户从大型供应商购买服务器时,他们通常选择具有强大CPU和慢速磁盘的服务器,这可能是由于营销材料过度强调了CPU的重要性)。
磁盘
快速IO意味着我们需要固态硬盘(SSD),因为SSD是随机读写之王。当然,SSD不是数据库的万能药,但它提供了真正的高性能,现在它是数据库的正确选择。
SSD有两种类型–企业级和消费级磁盘。它们之间的关键区别在于资源,大致计算为它们可以执行的IO操作数量。
例如,三星850 Pro 256 Gb MZ-7KE256BW–消费级SSD(基于MLC技术),其TBW(总写入字节数)为150 PB,DWPD(每日磁盘写入次数)= 0.16。或者更简单地说,资源可以解释为每天写入40Gb,持续10年。
更新:我们收到建议,三星PM863a($181.59)或SM863a($249)比850 Pro更可靠,但仍然负担得起–基本上,多花$60我们可以获得更好的稳定性和某种电涌保护。
这算多还是少?我们有一台配备消费级SSD的测试服务器,我们运行负载测试来模拟60Gb数据库上100个连接的高强度工作。每天启动3次这样的测试,每次3小时–这意味着这些测试模拟了9小时的工作日。测试已经运行了2年,剩余资源(根据固件)为54%。
当然,约50%的资源意味着驱动器应该在接下来的一年内更换……这有那么糟糕吗?每隔几年,SSD的速度就会提高,价格会下降:示例中的SSD具有6Gb/s,价格为$137,在2-3年内,同样的价格将能买到12G驱动器。
亚马逊价格从$124起
企业级SSD基于另一种技术(SLC)构建,大约可以执行相同尺寸消费级SSD的30倍操作。此外,它们的成本大约是消费级SSD的3倍。问题是:对于小型企业服务器,我们真的需要多花3倍的价格来获得30倍的IO次数吗?
如果我们正在寻找一个快速且负担得起的解决方案,使用廉价的消费级SSD并定期更换(当然,通过固件监控其资源)是非常有吸引力的。
与SSD相关的风险
作为理性的人,我们理解消费级硬件资源较少,故障几率较高,所以我们需要降低这些几率。我们如何降低它?
为了减少突然硬件故障的机会,有必要为数据库使用2个SSD,并捆绑在RAID1中。RAID1并不意味着我们需要单独的RAID控制器,使用现代主板芯片组的RAID功能就足够了–本质上,这是一个没有缓存的简单RAID控制器。
更新:由于主板上的廉价RAID控制器可能不支持SSD的TRIM功能,为避免性能下降,建议设置软件RAID,它在软件层面协调同步操作。
如果没有缓存,性能会怎样?现代SSD,如示例中的三星,具有内置缓存和非常智能的控制器–所以即使没有专用RAID控制器,它们也足够快。
当然,有必要检查磁盘健康状况;通常,固件提供了对磁盘寿命的足够好的估计。
备份
当然,我们需要用于备份的驱动器。最好的选择是一对2Tb的SATA驱动器–例如,希捷SkyHawk 2TB监控硬盘,转速为5900 rpm。
亚马逊价格$74.99
我们需要2个HDD,因为备份驱动器也必须放入RAID1中,以提供对突然硬件故障的保护。这些备份驱动器可以相当慢,它们的主要目的是存储备份并提供足够的顺序读写速度。5900 rpm驱动器比7200 rpm慢,但已知它们更可靠。这个特定系列的驱动器(希捷SkyHawk)专为线性写入而设计:这正是我们备份所需的。
备份驱动器的风险
风险与SSD相同,我们以相同的方式保护:RAID1和监控。RAID1中的两个驱动器同时故障的可能性应该很小。
系统驱动器
我们需要为操作系统单独准备一个驱动器吗?在最便宜的配置中–不需要,将操作系统和数据库放在同一个驱动器上就足够了。这会稍微加速SSD的退化,但不会太多–在我们的场景中,它绝对应该能维持3年。
CPU
对于Firebird数据库服务器,最好选择具有多核心且频率尽可能低的CPU。是的,你没看错–数据库服务器不需要高频率CPU。Firebird(如果配置正确)使用所有核心进行正常工作,但不会以100%的速率加载它们。
也有例外:一些维护操作(备份和恢复)受益于高速CPU,以及错误使用索引的编写不良的SQL查询–它们消耗100%的核心,但这清楚地表明需要进行数据库性能优化。总的来说,用高端CPU无法弥补慢查询:即使CPU快3倍,慢查询仍然会很慢。
另一方面,拥有多个核心可以弥补这类消耗CPU的查询的存在:在用户数低于25且拥有8个核心的情况下,所有核心同时被慢查询占用的可能性并不大。
而且,由于我们在寻找廉价解决方案,我们只能局限于桌面CPU–遗憾的是,只能选择AMD芯片。基本上,如果Intel能以与AMD FX-8320E相同或略高的价格提供8核桌面处理器,我们也可以使用Intel,但目前我没有看到这样的选项。
这款AMD芯片虽然不是那么现代,速度也不是最快,但它有8个核心,而且价格便宜,因此它是我们快速且廉价服务器的理想选择。
亚马逊价格为 USD$108
桌面CPU相关的风险
CPU相关的潜在风险是什么?对于低频(即未超频)芯片并配有合适的散热器,几乎没有风险。你上次听说桌面CPU故障是什么时候–2003年?当然,服务器CPU要快得多,但我们寻找的是一个足够好的解决方案。
监控CPU负载和温度以防止偶尔重启是个好主意。
内存
所需内存的大小取决于数据库大小和用户数量。在我们的场景中,数据库大小为50GB,最大用户数为30。
Firebird能消耗的最大内存大小是数据库大小(在这种情况下,数据库将完全缓存到内存中)加上每个用户200-300MB(在Firebird 2.5 SuperClassic的情况下)。因此,理想的最大内存大小是64GB,但由于我们想节省成本,而且我们有快速的SSD,我们可以使用低至16GB的内存。
在这种场景下,有些用户即使使用8GB也能正常工作,但8GB相当紧张:在这种情况下,同一服务器上不应运行其他应用程序。16GB是推荐的最低最佳配置。
亚马逊价格为 USD$59.99 x 2 = $120
内存相关的风险
内存比CPU更容易发生故障,但比磁盘更不容易。企业级内存具有特殊机制来减少错误可能性,如奇偶校验。我们如何评估和降低内存故障的风险?
首先,有方法可以检查内存芯片,如果这些测试成功通过,内存芯片将能工作多年。其次,当内存发生故障时,通常非常明显:计算机要么出现蓝屏死机或内核恐慌,要么频繁重启:所有这些症状都需要检查,如果结果不佳,则需要更换内存。
主板
主板是任何计算机的重要组成部分。幸运的是,现代桌面主板非常可靠,尤其是4-5年前发布的主板–它们拥有所有必要的更新并且稳定。而且–是的,它们很便宜。
我们需要一块支持RAID、带有集成显卡芯片和足够SATA接口的主板。类似这样的:
ASUS M5A78L-M Plus/USB3 DDR3 HDMI DVI USB 3.0 760G MicroATX主板
亚马逊价格为 USD$74,99
它拥有非常积极的评价,并且很容易配置为RAID1。
桌面机箱
我们需要一个桌面机箱来将所有计算机组件组装在一起,并配备足够的电源。类似这样:$76,82 http://amzn.to/2ydeYs1
UPS
有一件东西虽然不是服务器的一部分,但每台存有重要数据的计算机都应配备–不间断电源(UPS)。
UPS保护计算机免受断电和电压波动的影响。根据我们的经验,电涌或异常断电是数据库损坏的主要原因。
类似CyberPower CP1200AVR这样的产品,价格为$117.97,应该足够好了。
总计
因此,所有计算机组件和UPS的总价为USD 855,27–甚至低于USD1000,然而,在这些组件成为可工作的计算机之前,它们需要被组装、安装操作系统并进行测试。
| 项目 | 价格 | 数量 | 总计 |
|---|---|---|---|
| SSD三星850 Pro 256 Gb MZ-7KE256BW | $124,24 | 2 | 248,48 |
| 希捷SkyHawk 2TB监控硬盘 | 74,99 | 2 | 149,98 |
| CPU AMD FX-8320E | $86,02 | 1 | 86,02 |
| 内存海盗船Vengeance 8GB | $61,99 | 2 | 123,98 |
| 主板华硕M5A78L-M Plus | $57 | 1 | 57 |
| 桌面机箱 | $69,99 | 1 | 69,99 |
| CyberPower CP1200AVR | $119.82 | 1 | 119,82 |
| 总计 | 855,27 |
组装服务器
要将所有这些部件组装成可工作的服务器并安装操作系统(我们建议使用某种Linux发行版,如CentOS7+或Ubuntu Server 16+),所有这些组件都需要正确组装/插接。
这并不困难,只需要一把螺丝刀、一些耐心和时间来仔细阅读说明并观看一些YouTube视频。10年前几乎每个开发人员都能用这些部件组装一台计算机,如今情况有所不同,但仍然不困难。
如果你不想组装服务器怎么办?
有一条捷径–可以购买一台配置相似、几乎满足我们需求的计算机,然后插入额外的组件(即磁盘)。
我建议看看这台计算机–最初设计为游戏PC,它拥有8核CPU和16GB内存,仅售USD$709。
需要为其配备(打开机箱并插入)一对SSD驱动器(+$248,48)、一个额外的备份驱动器(+$74,99),当然还有UPS(+119.82)。总计将为USD 1153–高于$1000的目标,主要是由于显卡和漂亮的桌面机箱。你仍然需要配置RAID1(在BIOS中),当然,还需要安装服务器操作系统而不是预装的Windows 10家庭版。
这种方法可以用来将一台强大的桌面计算机转变为服务器–只需添加冗余SSD和备份驱动器即可。
过去许多中小企业和初创公司使用这种自建服务器,现在有一种使用基于云的虚拟机的趋势。
虚拟机与自建服务器相比如何?
当然,构建和维护自己的服务器需要一些技能(并不像看起来那么高),因此许多公司希望摆脱所有硬件服务器(可能还要解雇负责服务器的系统管理员)。
在下一篇文章中,我们将考虑将云中的VM作为中小企业的数据库服务器。
更多关于Firebird数据库性能的文章:
联系我们
请随时提出任何问题:[email protected]。
感谢
非常感谢为本文提供建议和改进意见的人们:
- Vlad Khorsun
- Dmitri Kuzmenko
- Pavel Zotov
- Sergey Nikitin
- Emil Mustea