我们正在使用一个有大约 300 个并发用户的应用程序。现在一切都被虚拟化了:1 个 VM 作为负载平衡器,2 个 VM 作为 Web 服务器,(在这个 ESXi 主机上还有另外 25 个其他 VM)和 1 个服务器(裸机)作为 SQL Server。我们在性能方面遇到了一些问题,因此决定购买物理硬件来提升它。
我不确定,我们如何才能获得更好的性能?:
我们购买了 1 个机架服务器硬件并仅使用上述所有 3 个虚拟机运行 ESXi,
我们为 Web 服务器购买 1-1 机架服务器硬件,并仅使用应用程序安装 Windows 服务器。(并像以前一样保留负载平衡器 - VM)
- 我们为负载平衡器和 2 个 Web 服务器购买了 3 个机架服务器。
用户通过 Web 界面/桌面应用程序连接到服务器。
谢谢你的帮助,德鲁多
在决定前进的道路之前,您应该找到一些信息:
受影响虚拟机的 CPU 使用率
CPU ready
表明主机已被过度使用?您有时会看到一条经验法则是,您希望平均准备时间少于 5%,但我的经验是,即使这对于您实际工作的系统来说也太多了。请注意,如果您使用 vCenter,指示的准备时间自上次图形更新以来的总毫秒数。在“实时”视图中,图表每 20 秒(=20000 毫秒)更新一次,因此可以使用公式计算 VM 的每个 CPU 的平均百分比(indicated_ready_time * 100 / 20000) / number_of_vcpu
。内存使用情况
(应始终在来宾操作系统中进行检查)
还要检查磁盘和网络性能是否存在延迟问题。
根据您的应用程序的扩展方式,添加更多 Web 服务器而不是在现有服务器上增加计算能力或内存可能是一个想法。
一旦您了解了瓶颈在哪里以及如何最好地利用您的硬件,您就可以开始制定购买什么的商业案例。
虚拟机的主要情况是它们更易于管理、更易于备份并且在系统故障时更易于迁移。它们可以更好地利用您的硬件,前提是它们实际上不需要您可以投入的所有资源,并且如果您使用半虚拟化网络接口,同一主机上的机器之间的通信速度与 CPU 可以管理的速度一样快,而不是受限于物理网络接口速度。
当然,直接在物理机器上运行的系统不会因为资源共享而产生开销,但这只有在您可以使用可用电源的情况下才有好处。
如果不调查性能问题的原因和对应用程序的了解,您将无法判断什么是最简单/最好的补救措施。
如果您的问题确实是缺乏硬件资源监控应该清楚地表明您现在在哪里达到限制以及购买什么(CPU 内核或 CPU 速度、更多 RAM 内存、更快的磁盘)以及在哪里分配它.
根据我的经验,一半以上的性能问题或多或少可以通过适当的调整轻松解决,而不是在问题上投入更多的硬件资源。大多数开发人员和太多供应商没有能力或资源来测试他们的应用程序和数据库后端,其数据量和负载与您在生产中获得的数据量相同,并且他们做出的假设和设计选择也不会扩展在实践中很好。
仔细监控将使您深入了解您的瓶颈是什么,以及您可能需要在应用程序、数据库或硬件级别解决什么问题。
请注意,性能分析和调优既是一门科学,也是一门玄学。
可以轻松解决并通常提供显着好处的非常常见的应用程序问题是
应用程序设计中较难解决的缺陷是应用程序前端的数据处理逻辑过多,数据库查询过于简单、未绑定并返回过多数据(例如使用 a
SELECT * from GrowingDataSet
) - 在您监控症状时例如数据库服务器上的高磁盘 IO 负载 - 应用程序服务器上的高内存消耗 - 饱和的网络链接 - 每一个都可用于支持不同的硬件购买决策(升级到数据库服务器中的 SSD - 增加应用程序服务器中的 RAM - 升级网络)当应用程序开始在查询中应用更好的逻辑和分页时,可能不需要这些。