最近有人问我:“您知道何时应该决定使用更多 RAM 还是更多服务器吗?”(在扩展数据挖掘应用程序的背景下)。
我不知道,那么有什么方法可以决定呢?我对架构和扩展的了解很少(我对计算机内存和服务器功能的理解仅限于高级基础知识),因此也非常欢迎有关进一步了解这些内容的提示。
答案1
“您知道何时应该决定使用更多 RAM 还是更多服务器吗?”(在扩展数据挖掘应用程序的背景下)。
答案是,只要您提供相关服务器的指标,我就会告诉您添加哪个指标(或者是否值得添加)。这种类型的调整不是巫术(除非您使用的应用程序没有仪表,服务器操作系统也没有仪表 - 那么是的,这是巫术),而是科学。测量应用程序和服务器。简而言之,使用监控指标找出性能瓶颈所在并添加更多指标。
答案2
在服务器/应用程序性能改进中通常需要相当多的巫术(或至少是反复试验)。
对于具体问题,一般规则是先增加内存,直到不能再增加为止或者直到增加内存不再能提高性能。由于内存相对便宜,因此可能更直接的做法是将内存最大化。此外,如果应用程序占用大量磁盘空间,则升级到高速驱动器或高性能控制器可能会有所不同。
但是,这个问题的普遍性让我认为还没有其他提高性能的尝试。我同意硬件很便宜,因此即使投入更多服务器来解决问题也很容易实现。但是,我还要确保已经采取了其他途径,特别是对操作系统和数据库进行调整。有时对数据库、操作系统甚至应用程序配置进行小幅调整可以带来巨大的性能改进。
使用您的特定操作系统、数据库和应用程序在此网站上进行搜索,您很可能会发现金矿。
答案3
作为一名企业架构师,我几乎每天都要处理这个问题。垂直扩展还是水平扩展?
您有什么需求?
您是否需要支持更多用户?您是否需要提高服务速度?您是否两者都需要?您是否需要 99.9999 的高可用性,或者您的用户可以承受停机时间?
首先,您需要捕获当前系统的性能指标。活跃用户数、RAM 和 CPU 负载、磁盘 I/O - 找出您的瓶颈所在。
根据问题可能的解决方案:从优化当前资源开始。如果您的应用程序是数据库驱动的,请使用查询和线程缓存、索引等优化数据库。如果您与其他应用程序共享服务器,请尝试迁移到专用服务器。(考虑对不太活跃/关键的应用程序进行虚拟化,以释放专用资源)。
当前的机器已满负荷,RAM 和 CPU 负载过重,磁盘 I/O 高 - 计算添加 RAM 的成本,是否可以切换到更快的磁盘 I/O(RAID、SATA 代替 ATA)?
如果您需要高可用性,那么您可能无论如何都需要添加硬件和负载平衡。
升级硬件和添加新服务器哪个更便宜?哪个更符合长期目标和增长?
您的 IT 部门什么时候花钱最好?您现在有资金吗?还是想将开支转移到另一个季度/年份?如果资金是个问题,那么现在就进行优化,或者探索从其他应用程序中释放硬件以添加临时负载平衡解决方案。
不要害怕探索众多解决方案。供应商可能希望您购买负载平衡、以 SAN 存储为中心的解决方案,其中带有 iSCSI RAID 10 的新服务器将以 10% 的成本运行。
如果优化后 CPU 仍然负载过重,则需要添加/更换硬件。如果磁盘 I/O 是瓶颈,并且无法升级存储技术,则需要更换硬件或添加网络存储/附加存储解决方案。
捕获性能指标。优化、改进并再次捕获指标。不断记录性能的增加/减少,以便您可以提交一份报告,记录您花费了多少以及性能提升了多少。如果做得好,这些都是可能的成功案例,可以让管理员成为架构师,架构师成为项目经理,项目经理成为高层管理人员。
答案4
RAM 很便宜。您应该始终先将其增加到最经济的数量(例如,4gb DIMM 非常昂贵,因此我不会为此烦恼)。
然后探索横向扩展(更多服务器)。考虑廉价的消费硬件与昂贵的服务器部件,但要预料到故障,并将故障转移估计纳入您的总处理能力中。
基本上,做谷歌。