我们处境艰难,我们有一个托管服务器,其规格如下:
OS: Windows Server 2008 R2 Enterprise SP1 64bit
Processor: Intel Xeon X7550 @ 2GHz (8 processors)
RAM: 16GB
文件系统位于 SAN 或 NAS 上(不确定)。
我们发现了一些非常奇怪的问题,用户打开一个 25MB 的 .xslb 文件,有时需要 60-120 秒。服务器对于 Excel 来说实在是太慢了。
资源没有被限制,CPU 从不飙升,RAM 充足……只是速度慢得离谱。
我们的主机已经关注这个问题好几个星期了,但没有什么进展。有没有一个我可以自己运行的实用程序来帮助追踪我们的问题?
我已经发现服务器性能顾问 V1.0 有使用经验吗?
我们的主机最终负责修复这个问题,但这个问题已经持续了 1 个月,我们的用户已经失去了耐心。任何建议都会有所帮助。
答案1
你为什么确定是服务器导致了性能缓慢?
上次有人向我报告此“问题”时,我收到一个 40 MB 的 Excel 文件,其中包含 200 多个数据透视表(以及十几个外部链接),需要计算在客户端机器上每次打开时。转到工作站,下载 Excel 文件,打开任务管理器,并在打开文件时观察本地机器的 CPU 负载。
在我的情况下,打开该文件需要 87 秒,在双 CPU、四核 i7 系统上满负荷运行。确认这一点后,我将问题推回到了它所属的地方,也就是那个创建了一个电子表格如此多的条目和计算可能会让大型机无法运行。我敢打赌,您的情况也存在同样的问题。电子表格太过庞大,客户端 PC 无法及时处理,当最终用户尝试执行任何远程技术操作时,就会发生这种情况 - 他们无法正确执行远程操作,结果每个人都会受到影响。
答案2
(您的意思是 xlsb,而不是 xslb?)
要快速查看“我的磁盘是否能够满足我的请求”:打开性能监视器并添加平均磁盘队列长度该驱动器的计数器(逻辑或物理均可)。一般来说,它不应该超过 10:这是一个粗略的概括,但可以帮助您区分好坏。磁盘队列长度通常应为 0 到 1,但在真正超负荷工作的服务器上,我看到它攀升至数十万并保持在那里。这只是一个计数器,用于指示有多少请求正在等待磁盘 I/O 接受它们进行处理。
但为什么要查看磁盘 I/O?你知道它很慢,所以对我来说,查看 perfmon 就是排除磁盘延迟计数器应该可能留在神奇20毫秒。
为了更全面地了解,我会使用PAL(日志性能分析),这是一个非常棒的工具,您可以运行它,告诉它您正在运行什么类型的“工作负载”,它会生成一个性能监视器的配置文件。将该文件导入 perfmon,在典型的一天运行 24 小时,然后获取日志输出并将其导入 PAL,它将使用 MS 最佳实践和真实信息生成一份漂亮的 HTML 摘要报告,以帮助您追踪潜在问题。以下是需要考虑的更多内容:
- 将文件放在 C: 上,它“可能”位于本地或与 D: 不同的存储上。如果 D: 实际上位于 SAN 存储上,则存储的磁盘、控制器和 NIC 可能与其他客户/工作负载共享,因此这很可能根本不是你做的。我只是在这里猜测,但将文件移动到不同的驱动器是一个简单的故障排除工具(再次假设磁盘位于不同的位置)。
- 除了 xslb 之外的其他文件有问题吗?大型 word 文档?
- 如果保存为xlsx打开会怎样?如果在本地电脑上打开会怎样?
- 该文件是否提取了任何远程数据?这可能是原因之一。
- Excel 是否有任何加载项,请尝试将其从 Excel 选项中删除。
- 对于大数据集,如果默认为 32 位(表格中有数百万行),Excel 可能会运行缓慢。您尝试过 64 位 Office 吗?(第 3 种方法可以解决这个问题。如果它在 32 位 Excel 上本地打开速度很快,那么您就知道这不是内存限制问题)。
- 有没有哪个时候它能非常快速地打开 25MB 的电子表格?如果是的话,那之后有什么变化吗?
- 很奇怪,但如果用户的默认打开位置不是 C:\(例如网络),我见过办公应用程序像这样加载缓慢,即使没有选择任何文件。通常是由 AD 中设置的用户配置文件路径引起的。