什么时候添加更多的核心到你的虚拟服务器?

我有一台装有Java 7和Tomcat 7的Linux(RHEL 5.8)服务器。

性能差,我很确定这是数据库查询是缓慢的。

我们现在有2个核心,平均负载不超过1.5,第二个核心使用率通常是0%。 他们想尝试添加一个核心,看看它是否会有所帮助。 我认为这不会。 通常我只会添加另一个,如果我看到所有的内核至less有一些时间超出了。

你对此有何想法? 你什么时候该说要添加更多内核?

更多信息数据库是在另一个由DBApipe理的盒子上。 我是Linux系统pipe理员。
CPU:2个核心的英特尔(R)至强(R)CPU X5675 @ 3.07GHz 16 GB RAM,2 GB交换8 GB分配给堆,堆的使用量通常小于4 GB,峰值约6GB CPU使用率峰值120%

你的performance可能与核心数量无关。 哟可能是I / O限制或只是没有足够的内存在系统上。

底层系统硬件的规格是什么? 例如CPU型号,时钟速度,RAM数量。

与其他指标相比,性能是否差? 你的期望? performance总是不好?

一般来说,我将系统负载视为确定核心计数是否足够的方法。 这听起来像是在你的情况正确的水平。

性能差,我很确定这是数据库查询是缓慢的。

如果您确信这是问题,那么您是否优化了您的MySQL或MSSQL安装? 仅仅在没有性能调整的情况下安装软件将不会通过投入更多的资源来解决。

我build议使用位于这里的MySQL Tuning Primer Script 。 非常容易使用和build议是相当现货。

根据您的设置,您可能需要学习如何手动调整性能 – 这意味着您要学习自己解释MySQL输出并对其执行操作 – 但是这个脚本在我使用过的95%的设置中运行得非常好。 其他5%是数据库特殊设置,需要更多的自定义照顾。 在MySQL性能博客上,我强烈推荐这样的教程。

在添加更多内核之前,最好查看实际使用的资源 – 例如,如果系统是IO绑定的,添加更多的内核会浪费金钱,但升级磁盘或RAM可能会解决问题。 尝试运行vmstat(例如“vmstat 2”)并监视io,内存和CPU,以便了解发生了什么事情。

I / O约束是最有可能的。

SSD?

由于您处于虚拟化环境中,添加/删除CPU和内存非常容易,因此基本上没有任何操作。 所以就这样做吧 然后当没有性能改进时,你指向你的应用程序分析报告,并说“我已经告诉过你了”。

确定何时向虚拟机添加核心时有多个指标可用。 正如你所提到的,核心使用是最明显的指标之一。 其他还包括实际的核心性能和应用程序的multithreading能力。

CPU可能是一个性能瓶颈,没有超过10%的使用率。 通常情况下,当你的CPU速度很慢时(1ghz vs 2.5ghz),你需要升级底层主机硬件。 (我的1.5ghz平板电脑虽然CPU使用率从未超过10%,但是速度很慢,CPU速度太慢!)

在那里还有很多不是multithreading的应用程序,所以不pipe多lessCPU(核心)你扔在他们,他们将永远不会使用多个。 通常在这种情况下,您需要研究升级应用程序以利用多个CPU,然后再向VM添加更多内容。 另外,一些操作系统也有限制(通常是基于许可)。 例如,Windows Server 2003 Standard仅支持4个物理CPU,但不关心每个CPU的内核。 这会影响您是否将虚拟CPU或每个vCPU添加到VM。

假设我的主机资源使用率很低,那么当我的性能指标显示正常工作时间内平均(平均)CPU使用率超过50%时,我会向VM添加核心。 这是一个任意的数字,根据你的应用程序和使用模式,你可能需要更多的核心,CPU使用率为25%或75%,但是当你的平均值达到75%时,可能会有一段时间来做任何改变。 您需要注意一致的使用情况与使用率峰值。 如果您的CPU通常为5%,但几分钟内达到100%,则在确定引起峰值的原因之前,您不需要添加内核。 仅供参考,vSphere具有内置的这些性能指标。
编者注:这可能是最适合具有相当恒定负载的应用程序,如Web服务器。 如果应用程序存在碰撞和未命中负载,例如每4小时编译一次代码20分钟的开发服务器,则会有很大的不同。 在这种情况下,您应该查看应用程序(编译器)的性能以及该应用程序正在运行(编译)时的最高CPU使用率。 只要编译器是multithreading的,在整个编译操作过程中100%的CPU可能会受益于更多的CPU。 但是,那么你不得不担心你的开发者会因为把他们的游戏时间减半而生气。

某些应用程序(如MS SQL Server和MS Exchange)将故意占用您的资源(内存是最引人注目的),这是通过devise来实现的,因此您需要了解应用程序应该执行的操作。 您需要权衡实际的应用程序性能与其资源使用情况 – 如果SQL服务器使用100%CPU并快速响应,这与使用100%CPU的SQL服务器不同,响应速度缓慢。

如果应用程序性能很慢,但是您的指标和基准testing结果显示您的CPU不是瓶颈,那么不要担心添加内核 – 但是,如果不关心停机时间和主机资源,则暂时添加内核以certificate您的CPU用户不会花费10分钟的时间。

另外,请记住,一个好的pipe理程序(如VMWare ESXi)允许您过度configuration。 这意味着即使您的主机只有8个核心,也可以configuration4个虚拟机,每个虚拟机4个核心(共16个核心)。 虚拟机pipe理程序dynamic地分配主机资源到最需要虚拟机的虚拟机,所以有了3个虚拟机,你的第四个虚拟机就可以咀嚼你所能分配给它的尽可能多的主机。 您要注意的问题是许可证,因为某些应用程序按每个核心每个CPU许可,而不是每台机器或操作系统安装。