五年旧服务器升级

五年旧服务器升级

我想升级一个用于 Web 应用的服务器。目前该应用程序运行非常缓慢。我们对 mysql 做了一些调整(这本身就是另一个问题),并做了一些调整,以便最繁重的查询在另一台服务器上的数据库副本上运行,作为备份,但这不会持续太久,我们正在考虑升级。

目前服务器的 CPU 是 (4) Intel(R) XEON(TM) CPU 2.00GHz,配备 1GB 内存。

该数据库大小为 442.5 MiB,约有 1,743,808 条记录。

该程序分为两部分,其中 a 部分插入并更新大部分数据。b 部分读取数据并进行一些小更新。

目前,我们 A 面的最大日用户量为 800 名(全年 40,000 名用户)输入系统。我们的 B 面目前未知,但我们总共有 1000 名客户。

该系统的最大 B 端用户数很可能达到 5,000,而 A 端用户数每年约为 300,000。

当前数据库已有 5 年历史,因此我们很可能预计数据库会增长得相当快,可能每年翻一番(如果可以的话,我们很可能可以存档较旧的记录)。

话虽如此,我们是否应该为应用程序的每一侧设置一个服务器,A 侧作为主服务器,B 侧作为从服务器,在 B 侧进行的任何更新都将路由到 A 侧。

所以问题是我应该买 2 个还是 1 个。

  • 2 个英特尔 Nehalem Xeon E5520 2.26Ghz(8 核)
  • 12GB DDRIII 内存
  • 500GB SATAII 硬盘
  • 100Mbps 端口速度

当然,我需要有一个冗余备份,所以可能有 4 个。

答案1

目前...1GB 内存。

1GB,对于一个繁忙的数据库来说?真的吗?您数据库的当前大小为 445MB。虽然这比您的 1GB RAM 要小,但增加更多 RAM 可以为索引、事务日志和查询工作集提供空间,所有这些都驻留在内存中。如果您将 RAM 增加到 4GB,我敢打赌您会发现您的磁盘子系统几乎不再重要,并且您的 CPU 已经足够了。

话虽如此,我还是会考虑购买一台新服务器。硬盘的使用寿命有限,而且你最终还是需要将数据写入磁盘。还有一种可能是,一旦所有内容都存储在 RAM 中,你就会发现自己确实需要更多的 CPU 能力。所以继续吧……

我应该买... 500GB SATAII 硬盘

亲爱的上帝,不。你想要至少 4(计算一下)系统中的磁盘数量(当然,越多越好),并且如果负担得起,您需要 SAS 磁盘。根据您展示的内容,您不需要很多硬盘空间,因此请尽可能购买最小(因此更便宜)的 10K 磁盘,将它们放入 RAID 10 配置中,然后确保你有一个真正的基于硬件的 RAID 控制器(遗憾的是,这会使总成本增加近 1000 美元,或者您没有买到好的控制器)。您应该能够将所有这些放入 1U 盒中,一点问题都没有,但您可能需要为 2U 盒配备更多托架,以便将来扩展。此类系统的总成本将为 4000-5000 美元。

如果带有 4 个 SAS 磁盘的系统听起来比你想要的要贵,那就去找你的老板谈谈,告诉他你今年可以推迟购买新服务器,只需在旧服务器上添加 RAM,前提是他能给你明年购买真正服务器所需的资金。他很可能想同时做这两件事:只让你今年购买 RAM让您明年在服务器上节省开支。但即使您必须选择 SATA 而不是 SAS,至少也要坚持使用 4 个磁盘加上基于硬件的 RAID 10。

答案2

E5520 是唯一可用的芯片吗?它现在有点旧了,而较新的 56xx 系列芯片会有一些性能优势。此外,该 NIC 几乎肯定会是 1Gbps 而不是 100Mbps,据我所知,服务器主板不再有 100Mbps 的了。如果我是你,我也会考虑使用一对镜像 10krpm SAS 磁盘进行数据库工作。哦,还要确保你使用的是 64 位版本的 Centos,最好是较新的版本,例如 5.6 左右。

至于您的实际问题,您指定的单台机器将比您现有的机器快得多。我很想尝试使用一台更符合我上面提到的规格的单台机器,这将让您投资更好的磁盘等。然后,如果您觉得需要第二台机器,我会当时考虑这一点。

答案3

您可能只想升级磁盘子系统,这可能是您的瓶颈。您没有说明您的操作系统,但所有操作系统上都有工具可以测试您的磁盘受到的冲击有多大。

从您描述的情况来看,事务日志使用双驱动器 RAID 1,数据库使用三驱动器 RAID 5 是理想的选择。如果可以,请至少使用 SAS 驱动器。

答案4

我建议花一点时间了解当前设置为何“缓慢”,并更准确地统计每侧运行的查询数量和类型。尤其是考虑到您的流量可能会增加 10 倍,如果您只是盲目地尝试扩展,则可能会扩展错误的东西,并且明年必须再次扩展,花费比需要的更多的时间/金钱。

我将开始关注以下几件具体的事情:

  • 更好地了解您当前的流量。不仅要了解有多少流量,还要了解每种类型的流量有多少。您似乎已经按读取/写入对其进行了划分,但还要考虑其他类型以及每种类型对性能的影响(例如,缓存/未缓存、慢速/快速查询等)。考虑“用户”等一般类别的危险在于,不同类型的流量可能会以相同的方式增加(例如:您的读取量可能比写入量增加得更快),并且类型的扩展也会有所不同(例如:MySQL 复制可以很好地扩展读取量,但不能很好地扩展写入量)。监控数周/数月的流量还可以让您更好地了解未来流量增长的趋势。
  • 找出当前服务器的瓶颈。是 CPU/内存等简单问题,还是应用程序/数据库设计等更微妙的问题。如果您只需要更好的表索引,请不要在 CPU/RAM 上花费太多钱。
  • 对系统进行基准测试/分析,了解其极限。这不仅对于了解何时需要再次扩展/缩小系统非常重要,而且对于在更改硬件/软件设置时量化系统性能也很重要。上次应用程序修订是否使性能下降了 25%?调整 MySQL 配置是否有什么作用?除非您进行测量,否则您可能永远不会知道。
  • 根据您当前系统的速度和升级预算,我会考虑立即购买一台新服务器。在设置新服务器时,请进行一些基本的基准测试/测试,以查看您将从中获得什么样的性能提升。如果幸运的话,您可能会发现性能提升幅度很大,那么是否需要购买更多服务器的问题将不复存在。

相关内容