不是一个技术问题,但仍然是一个有效的问题。设想:
HP ProLiant DL380 Gen 8 配备 2 个 8 核 Xeon E5-2667 CPU 和 256GB RAM,运行 ESXi 5.5。给定供应商系统的八个 VM。四个 VM 用于测试,四个 VM 用于生产。每个环境中的四台服务器执行不同的功能,例如:Web 服务器、主应用程序服务器、OLAP DB 服务器和 SQL DB 服务器。
CPU 份额配置为阻止测试环境影响生产。SAN 上的所有存储。
我们对性能有一些疑问,供应商坚持认为我们需要为生产系统提供更多内存和 vCPU。但是,我们可以从 vCenter 清楚地看到,现有的分配并没有被触及,例如:主应用服务器上 CPU 利用率的月度视图徘徊在 8% 左右,奇数峰值高达 30%。峰值往往与备份软件的启动相吻合。
RAM 上的类似情况 - 服务器的最高利用率约为 35%。
因此,我们一直在进行一些挖掘,使用 Process Monitor (Microsoft SysInternals) 和 Wireshark,我们对供应商的建议是他们首先进行一些 TNS 调整。然而,这不是重点。
我的问题是:我们如何让他们承认我们发送给他们的 VMware 统计数据足以证明更多 RAM/vCPU 无济于事?
--- 2014 年 12 月 7 日更新 ---
有趣的一周。我们的 IT 管理人员说我们应该对 VM 分配进行更改,我们现在正在等待业务用户的一些停机时间。奇怪的是,业务用户说应用程序的某些方面运行缓慢(与什么相比,我不知道),但是当我们可以关闭系统时,他们会“让我们知道”(抱怨,抱怨!)。
顺便说一句,系统的“慢”方面显然不是 HTTP(S) 元素,即:大多数用户使用的“瘦应用程序”。这听起来像是主要金融机构使用的“胖客户端”安装,显然是“缓慢”的。这意味着我们现在正在研究中考虑客户端和客户端-服务器交互。
由于这个问题的最初目的是寻求帮助,是否要走“戳它”的路线,或者只是做出改变,我们现在正在做出改变,我会用longneck的回答来结束它。
谢谢大家的意见; 像往常一样,serverfault 不仅仅是一个论坛——它也有点像心理学家的沙发:-)
我建议您进行他们要求的调整。然后对性能进行基准测试,向他们展示它没有任何区别。您甚至可以使用 LESS 内存和 vCPU 对其进行基准测试,以说明您的观点。
另外,“我们付钱给你,让你用实际的解决方案来支持软件,而不是猜测。”
只要您确信您符合他们记录的给定系统规格。
然后他们提出的任何关于需要更多 RAM 或 CPU 的声明,他们都应该能够备份。作为他们系统中的专家,我要求人们对此负责。
询问他们的具体情况。
系统上提供的哪些信息表明需要更多 RAM,您是如何解释的?
系统上提供的哪些信息表明需要更多 CPU,您是如何解释的?
我拥有的数据 - 乍一看 - 与您告诉我的内容相矛盾。你能向我解释为什么我可能会错误地解释这个吗?
我将这个 [明显的一系列数据] 解释为 [明显的解释]。你能确认我对我的问题的解释正确吗?
在过去处理过支持问题后,我也问过同样的问题。有时我是对的,但他们并没有正确地把注意力集中在我的问题上。然而,其他时候,我错了,我对数据的解释不正确,或者没有包括在我的分析中很重要的其他数据。
无论如何,这两种情况对我来说都是净收益,要么我学到了一些我以前不知道的新东西,要么我让他们的支持团队更加努力地思考我的问题,以获得一个体面的根本原因。
如果支持团队无法为您提供他们的论点的逻辑扩展,以您可以满意的基础(您需要以开放的心态妥协自己,合理地接受您对数据的解释是错误的),那么它应该在他们的回应中变得非常存在。即使在最坏的情况下,您也可以将此作为升级问题的基础。
最重要的是能够证明您正在使用最佳实践进行系统分配,尤其是为 SQL 服务器预留 RAM 和 CPU。
话虽这么说,最简单的事情是进行所要求的调整,至少是暂时的。如果不出意外,它往往会让供应商拖拖拉拉。我数不清有多少次我需要做这样疯狂的事情来满足电话另一端的技术人员,即他们的软件确实没有运行。
对于这种特定情况(您有 VMware 和应用程序开发人员或不了解资源分配的第三方),我使用从vCenter Operations Manager(vCops -如果需要下载演示)获得的一周的指标来查明真正的限制、瓶颈和应用程序 VM 的大小要求。
有时,我可以通过修改虚拟机预留或更改优先级来处理争用场景来满足更顽固的消费者;“如果 RAM|CPU 紧张,您的虚拟机将优先! ”。当我允许软件供应商在没有实际分析的情况下对我的 vSphere 集群提出他们的要求时,就会发生糟糕的事情。
但总的来说,数字和数据应该胜出。
我用来向 Tomcat 应用程序的开发人员证明 VM 大小合理的示例:
开发人员:VM 需要 MOAR cpu!
我:嗯,记忆力是你最大的限制,这里有一张你的表现与时间的热图……周三下午 6 点是压力最大的时期,所以我们可以确定那个高峰期。哦,这是基于过去 6 周生产指标的尺码建议...
我曾经在支持部门工作-您所要求的部分内容听起来非常合理(并且可能是):但是在执行他们要求的“性能增强”之前,有几个问题要问自己
供应商将有 100 次中的 99 次(根据我的经验——在支持方面和客户/现场方面)甚至不处理与性能相关的问题,直到/除非系统符合他们的文档要求。也许这是一个在 99.5% 的时间内运行良好的系统,配备 1 个 CPU 和 512M RAM - 但如果系统要求是 4 个 CPU 和 4G RAM,而您只有 2 个 CPU 和 1G RAM,那么他们完全有权要求分配更多资源* .
他们可能会要求您增加系统资源,因为他们在实验室/开发中发现了一些问题,如果您越过特定阈值,问题就会神奇地消失;如果是这种情况,是的,这是他们最终可能调试不佳的一个例子,但请记住,他们没有时间消除出现的所有可能的错误/问题 - 有些只需要解决,如果就是这种情况,随它去吧。
您所看到的问题甚至不是“他们的”软件的一部分,而是他们依赖于其他来源(供应商、OSS 库等)的组件,这也不是微不足道的机会。几年前,我在一个客户那里遇到了与交换大小、BEA WebLogic 和Sun JRE相关的确切情况。
tl;博士:
简而言之,与他们的支持团队合作,根据需要升级,直到找到解决方案 - 但当一些建议/调试步骤/修复听起来不合时宜或毫无意义时,不要感到惊讶。
*如果它真的不“需要”那些额外的资源,你很可能在一个地方能够为未来的版本提交一个 doc bug / RFE - 但在你证明它不是之前不要推动这条路线手头的问题
^我写的一本电子书可能对您有所帮助:调试和支持软件系统
要么要求升级票证,要么要求其他代表。如果您说您认为当前的支持水平不能充分解决问题,则取决于哪个供应商,升级可能会有所帮助。如果他们不会升级,那么要求不同的代表可能会有所帮助,因为这需要更少的“理由”,因为它所需要的只是对当前的不满意。
如果它是一个大供应商,那么简单地关闭票并在同一问题上打开一个新票可能会起作用,因为它可能会被路由到不同的代表,但我建议不要这样做,因为它的形式很差。
您也可以坚持自己的立场,询问更多 RAM/vCPU 将如何提供帮助的理由,或者您可以只给它更多 RAM/vCPU 以证明它没有帮助。
我会投入我的两分钱。我们在这种方法上取得了相当大的成功——更好的结果和更少的挫败感。它比推卸责任和盲目添加资源需要更多的努力,但它也有更好的机会找到根本问题。
当我们在由供应商支持合同支持的本地应用程序方面遇到严重问题时,供应商开始他们的闪避洗牌舞(这似乎总是包括对更多 CPU 或 RAM 的古怪的非数据驱动需求),我们倾向于做这三件事:
将优先级提升到系统停机等价物——他们通常会犹豫不决,但当你解释它实际上不可用时,即使它在技术上“工作”,通常也会退缩。把它当作一个严重的问题来解决。在这里,我们将其称为老虎团队,每天开会以获取所有利益相关者的状态更新。通常供应商会要求您更改内容。如果它是一个 prod 系统,那是有问题的,但是如果您希望他们提供帮助,您将需要承担帮助他们隔离问题的责任,因此如果您有一个可以运行测试的开发/登台环境,这会有所帮助。
告诉供应商您希望他们复制您的环境,以便他们可以在他们的实验室中隔离问题。如果需要,他们甚至可以在某些云环境中托管东西。它不必与您的环境完全匹配,尽管这将是理想的。关键是您希望供应商积极尝试复制您的问题,以便他们可以在他们的系统而不是您的系统上测试他们的猜测。向他们询问该复制环境的图表、规格等,以确保他们正在这样做。
向他们(当然在 NDA 下)提供您的实际数据集,以便他们可以真实地运行/重放它,而不是猜测。在我们的案例中,我们的大多数供应商提供的应用程序问题(暂时的和长期的)经常被证明是伴随的供应商提供的数据库的问题。我无法计算我们这样做的次数,他们最终将问题归结为实际数据中出乎意料的东西——2 年前应用升级的奇怪工件,其中某些东西没有完全转换;陈旧的记录暴露了 GC 设置的问题;查询不能正常工作,因为我们的数据值破坏了供应商代码中的一些幻化例程等。我们永远无法自己识别的东西。
在过去的几年里,我们已经与不少供应商合作过,他们最初非常抵制我们的方式。然而,在它起作用之后,它总是在我们与供应商进行的季度审查中成为一个积极的亮点。它有助于巩固我们与这些供应商的技术关系。他们不想要模糊的问题。他们确实希望可以分析具体问题以改进他们的产品。
希望建议有所帮助。我知道这不是一刀切的方法,但如果你能挥动它,我认为你会发现它是值得的。
真正的问题是,谁在这里负责?如果您实际上无法切换到替代供应商,那么他们有能力,您真正能做的就是按照他们所说的去做,并希望它会奏效。不是一个快乐的情况!否则,我建议您要求另一位代表(正如其他人所说),但要明确表示您对服务不满意,如果他们无法完成这项工作,您会寻找其他地方。
如果你确定它们不会起作用,不要只是“做出他们建议的调整”,因为这会为你的关系建立一个模式,从长远来看会伤害你。你付钱让他们为你提供服务,他们不应该比我雇来粉刷我房子的人可以决定它的颜色更能决定你的行为。
这听起来可能很激烈,因为听起来这不是一个非常关键的问题,但事实是,如果他们在一些小事上惹你生气,他们很可能会对大事做同样的事情,而你最不想要的就是六个月后遇到某种可怕的查理狐步舞,然后与供应商有同样的麻烦。
确保您现在为解决问题而采取的任何步骤,在您距离截止日期还有两天并且一切都中断时同样有效......
我将从供应商的角度发布一个视图。
我们的这个客户遇到了这个反复出现的问题,软件的性能每隔几个小时左右就会下降到某个真正糟糕的速度,然后几个小时后又回来了。
系统中的 bulitin profiler 表明系统 CPU(或可能是内存)速度慢得令人作呕,大约是 100MHZ,而不是预期的 2GHZ。将 VM 提供的 CPU 加倍并没有改变症状,他们认为我们是在浪费。
由于他们无法获得更快的 CPU(更多 CPU 无济于事),因此我们尝试交换 TEST 和 PROD VM。然后问题出现在第二天的测试中。然后我们尝试将其中一个客户端提升为独立(无服务器)实例。服务器阻塞时,该工作站上没有问题。
他们从 VM 主机生成报告,表明没有性能问题,并再次尝试声称这是一个应用程序问题。
最后,我[一名工程师](我从那些专门支持角色的人那里得到了零支持)专门要求一个物理盒子。客户尖叫着血腥谋杀,但没有人有任何其他潜在的解决方案,他们做到了。你知道吗,问题神奇地消失了。
我们从来没有发现问题是什么。所有基准程序都显示正常,但应用程序分析器告诉我们计算资源根本不够用。我们现在在探查器中寻找一种特定的签名。如果我们看到它,我们在进一步讨论之前就知道问题是虚拟机交互,但当时还不知道。
他们肯定认为我已经吃饱了。我不是。我没有选择。
编辑,多年后更新:
随着越来越多的客户希望在虚拟机上运行,管理层愿意不惜一切代价尝试解决问题,我们得到了很好的虚拟机硬件。我能够构建一个专门的 VM 刻录程序,该程序在两个具有 512mb RAM 的单核 VM 上运行在用户空间中(并且不需要特权),它能够消耗另一个只有 4 个单核 VM 的 1/3 内存性能VM 主机上使用的 16 个内核中的总内核数,并且其大部分内存仍然空闲。该程序没有发出警报,并且在 VM 主机和任何来宾上都没有显示任何异常,除了内存访问很慢。
现在我们可以告诉客户我们知道虚拟机有问题,而不是我们的软件。我们仍然不时收到客户对 VM 兼容软件的要求。我想知道为什么管理层不让支持人员告诉他们我们能够开发出一款软件来减慢同一主机上的所有其他虚拟机的速度。
可怕的是所涉及的技术是对涉及无锁同步的众所周知的编程技术的简单转换。数以百计的软件供应商可能在他们的软件中安装了这个 VM 消耗器,但他们并不知道。获得一个竞争激烈的原子指令锁应该是罕见的,但并非不可能。有趣的是,我获得了参加 ACROSS VM 比赛的资格。
我建议对目前提到的方法采取一种非常不同的方法。在与供应商争论之前,为什么不更仔细地查看报告的问题,看看它告诉你什么。
报告的实际问题是什么,用户的期望是什么。如果用户说某事“花费太长时间”,请准确询问他们“它”是什么(以便您可以复制它),他们认为应该花费多长时间,以及为什么他们认为应该花费那么长时间。如果他们的期望是合理的,请衡量他们正在尝试做的事情的实际性能和系统影响。您的系统在一个月内显示 30% 的峰值这一事实并不意味着当用户尝试查询时它没有以 >100% 的速度运行。如果您可以向您的供应商证明 CPU 和内存没有因有问题的任务而紧张,那么您可以要求供应商证明会花费您金钱的建议的合理性。