展览:
我们使用 MS Access 内置的程序,我通过终端服务提供服务。我刚刚安装了一台新的 TS 服务器,它有四核 2.6GHz Xeon、8GB RAM 和 4 个 SATA 驱动器(RAID 0)。安装了 Server 2008 R2(显然是 64 位)。它唯一的作用是 TS。
问题:
仅进行过几次会话(不到 10 次),我开始在每个会话中频繁收到“无响应”消息。当发生这种情况时,用户并没有做任何特别费力的事情,只是进行表单导航和简单的插入查询。
我可以忍受一些停滞,但在 WS08 中,视觉上会很不协调,因为屏幕变灰,并且会显示一个对话框,提示您等待或关闭并提供一些其他选项。
问题:
- 有什么建议可以提高性能并减少挂起吗?
- 是否可以禁用对话框(始终等待)和屏幕变灰?
答案1
听起来你需要进行一些基本的性能分析,首先,看看你的瓶颈在哪里。从这张图表中得到的数字会让你大致知道从哪里开始寻找你的性能问题。
我将启动性能监视器(开始/perfmon),导航到“性能监视器”节点,然后使用工具栏中的“+”图标,将以下计数器添加到图表中:
内存 - 页面/秒 - 这将显示导致性能不佳的内存分页活动(它也可以显示与性能不佳无关的分页活动)。如果你看到高分页,那么你可能RAM 容量可能成为瓶颈。这也可能表现为磁盘瓶颈(因为对分页文件的读取/写入),因此要小心。
物理磁盘 - 平均磁盘队列长度 - 选择与 Access 数据库文件所在驱动器相对应的实例(假设它们位于服务器计算机的本地磁盘上) - 根据非常普遍的经验法则,此数字不应大于 RAID 卷中主轴数量的 2 倍。如果看起来您遇到了磁盘瓶颈,您可以深入研究磁盘计数器。
网络接口 - 每秒字节总数 - 选择与客户端通过其访问服务器的 NIC 相对应的实例。如果 Access 数据库文件托管在网络共享上,请为服务器用于访问该网络共享的 NIC 添加一个实例(假设它不是客户端通过其访问共享的同一 NIC)。- 这将为您提供网络接口上移动的字节总数/秒。您可以使用非常负载的测试工具,西门子TCP,以衡量服务器和客户端计算机之间的最大带宽利用率。将该数字与此数字进行比较。
Perfmon 将自动为计算机中所有处理器的“总数”添加一个“处理器时间百分比”计数器。我会删除它,并为计算机中的每个处理器实例分别添加一个处理器 - 处理器时间百分比计数器。Microsoft Access 主要是单线程的,如果您请求单个处理器实例,“_Total”处理器时间百分比计数器可能只显示 25%(如果您的处理器上有超线程,则显示 12.5%)。
这涵盖了潜在的瓶颈 - 磁盘、RAM、网络和 CPU。您可以使用该图表来了解机器的总体性能。然后,您可以开始深入研究特定瓶颈并找出罪魁祸首。
我的一位客户将他们在办公室使用了几年的“小型 Access 应用程序”部署到运行 Windows Server 2008 的终端服务器上,并且震惊性能如此糟糕。它在台式机上“运行良好”,他们希望它在终端服务器上也能如此。结果发现,当用户同时打开应用程序时,他们很快就用完了终端服务器上的所有 RAM。在一台具有 1 或 2GB RAM 的台式机上打开数据库并不是什么大问题,但 15 个人试图在终端服务器上共享它就太多了。(如果您能相信的话,数据库中存储了作为 OLE 对象的大型 PDF 文件……令人难以置信但却是事实。MDB 文件超过 300MB……)
另外:RAID 0?在服务器上?使用 RAID-0 会增加故障几率,因为它的冗余度为“零”。如果您追求高性能,最好使用 RAID-10,并以可靠性为名牺牲一些磁盘空间。我无法想象在运行 Microsoft Office 类型应用程序的终端服务器计算机上需要 RAID-0 的原始 IO 性能。