我们有一个由 2 个物理和 2 个虚拟 Citrix 服务器组成的 Citrix PS4.0 场。由于达到 100% 的 CPU 使用率,它们中的任何一个最终都会导致性能下降。当这发生在任一 VMware 服务器上时,我可以在 Virtual Infrastructure Client 中看到 CPU 使用率峰值。
这不是与用户数量相关的负载问题,因为任何数量的用户都可能随时发生这种情况。
用户正在运行共享桌面,而不是应用程序。桌面中安装的应用程序是标准办公应用程序(Word、Excel、Outlook),通过 Bluecoat 代理和几个行业特定的应用程序具有有限的 Internet Explorer 访问权限。
可以使用哪些工具来解决和诊断问题的根源?一旦服务器达到 100% CPU,就不可能登录并查看哪个进程正在消耗所有资源。唯一的办法是硬重置机器。所有服务器都按计划在每天凌晨 4 点重新启动。
注意:我已经使用默认配置选项和日志记录活动在所有 Citrix 服务器上安装了 ThreadMaster。日志没有揭示问题的根源。
编辑
- Citrix Presentation Server 4.0,企业版
- 修补程序 PSE400W2K3R03
- Windows 2003 服务器标准版服务包 1
- 运行根据 Citrix 针对文件排除等的建议配置的 Symantec Client Security 10.0.0.359。
Windows 2003 SP1 在 4 月停止支持,因此您的操作系统不再获得任何安全补丁。您需要尽快升级到 SP2。
SP2 还包含许多随机错误修复 - 您的问题可能会消失。
如果您的操作系统具有那么旧的补丁级别,那么某些驱动程序(特别是打印驱动程序)很可能在包装盒上也已过时。由于驱动程序通常是系统不稳定的一个重要来源,我会尝试检查它们是否都已签名并且是最新的。有一个狡猾的打印驱动程序可以解释为什么它会影响虚拟和物理盒子,并且无论负载如何似乎都是随机发生的。
哦,仅供参考,Citrix 4 将于本月底 6 月 9 日进入 EOM(维护结束,不再修复错误),并于 12 月 9 日结束 EOL(生命周期结束,不再提供安全补丁或任何其他补丁)。享受你的升级周期!
您可以尝试安排脚本每分钟运行一次,以便将进程列表附加到文件中:
像这样的事情至少可以让你知道发生了什么。
(pslist 与 Sysinternals 套件一起提供)
内置的性能日志和警报工具将是一个很好的工具,可以让您获得一些关于正在发生的事情的数据。您将不得不使用一些磁盘空间来生成这些日志,但是如果您在问题发生之前一直删除旧日志文件,那么您应该不会遇到磁盘耗尽的问题。
我会在每台服务器计算机上启动计数器日志,将Process和Processor对象记录到磁盘(我也可能会抓取Memory对象)。
开始/运行/PERFMON
展开Performance Logs and Alerts节点并突出显示Counter Logs节点。
单击操作和新日志设置。随意命名日志。
单击日志属性窗口中的添加对象...按钮并将对象添加到日志中。
设置一个间隔。我可能会选择 60 秒或更长的时间间隔。高分辨率可能不是必需的,因为这是逐渐降低的。
在日志文件选项卡上,使用配置按钮选择日志文件的位置和基本文件名。我会选择最大日志大小,例如 5MB - 10MB。这将生成大量小文件,但您将能够监视存储文件的路径并删除在问题发生之前堆积的旧文件。
您可以通过右键单击结果窗格中的新日志实例并选择“开始”来启动日志。默认情况下,日志将一直运行,直到您将其停止或重新启动计算机。(有关在启动时启动日志的信息,请参阅此问题:How to Setup Perfmon to Automaticaly Start an "Alert" At System Startup? (该问题涉及启动警报,但您可以使用相同的命令启动日志。)
您可以在问题发生后手动分析这些日志。您可能想尝试 Microsoft 的日志性能分析 (PAL)工具 ( http://www.codeplex.com/PAL )。我对该工具生成的报告感到满意,而且它相当易于使用。
如果服务器只有一个 vCPU,请尝试向服务器添加额外的虚拟 CPU。如果它是一个消耗所有 CPU 的单线程应用程序,您至少会杀死它而不是重置服务器。
您正在运行哪个版本,您是否有 SA 协议?
您是否在服务器上运行防病毒软件?
另外,您在 PS4 上运行什么修补程序/汇总,在 Windows 上运行什么 SP?
每台机器有多少 CPU/核心?在许多核心上达到 100% 意味着多线程应用程序会吃掉所有资源。
您是否有规律(每 X 小时或每天 2 点左右达到高峰)?
事件日志中的任何内容(如大量打印)?
你有 SCOM 吗?
我们的 Internet 监控软件也有类似的问题,结果证明 XTE(会话可靠性)进程损坏了 WinSock 库和/或 TCP/IP 堆栈。要修复 TCP/IP 堆栈,请在 Citrix 服务器上运行命令“netsh winsock reset”并重新启动。
你在 PS4 上也落后了 3 个汇总。可能希望将您的服务器升级到 Rollup 6
您是否考虑过升级到 WS2003 企业版并利用Windows 系统资源管理器来包含应用程序资源?
关于我们在 Citrix 机器上遇到高 CPU 的唯一问题是由于糟糕的打印机驱动程序导致后台处理程序服务变得绝对疯狂。具体来说,这要归咎于 HP LaserJet 打印机驱动程序,直到去年 12 月左右,当他们重新修复了修复大量崩溃的底层 DLL 时,这些驱动程序一直很糟糕。他们的发行说明上的更改日志很有趣。
无论如何,您也许可以从您的工作站尝试“sc \servername stop spooler”,看看它是否可以连接并终止错误服务器上的打印假脱机程序,这可能有助于排除打印机驱动程序的问题。