【发布时间】:2013-11-12 14:13:44
【问题描述】:
我们使用名为 Shipworks 的程序在工作中运行服务器,我们是一家电子商务公司,因此可以帮助我们运送订单。
当我们的所有用户都打开时,我们一直在运输标签打印和通过程序(使用 sql 数据库)搜索时遇到间歇性问题。我们有 8 到 12 名用户活跃在造船厂上。
我们的服务器有 8GB 的 RAM 和一个四核处理器。我正在使用 new relic 来监控服务器以确定问题,并且看起来内存量超出了应有的水平。
截图:http://tinypic.com/r/2j5bga0/5
我的内存保持在 8600 MB 的系统交换 RAM 和 5400 MB 的已用 RAM 不变。服务器只有 8gb 的内存,但这听起来像是在使用大约 14gb 我知道有虚拟内存,但这里肯定有问题。如果有人可以提供帮助,将不胜感激
【问题讨论】:
-
您可以尝试几种方法,具体取决于您的技术熟练程度。一种是通过 SQL Server 进行跟踪,您可以在其中过滤运行时间和资源使用情况等标准。另一种是下载 WinDBG 并将其附加到进程并取消选择瓶颈所在。我不确定“新遗物”是什么,但您可能想尝试sourceforge.net/projects/hyperic-hq 作为中间步骤。您的 ram 使用情况很好,并且磁盘上的交换始终与您安装的 RAM 大小相同,所以也可以。我的猜测是 SQL 问题,您可能需要删除一些旧数据。
-
你的意思是清除我的桌子对吗?数据库大小和处理量之间是否存在相关性?即使我查询一个较小的表,由于数据库大小,处理量会更高吗?
-
SQL Server 有很多优化来应对这种事情。要回答您的问题,总体数据库大小不会影响单个查询的性能。因此,如果您的表变得很大,并且不再需要该数据,您可以重命名该表,然后将其重新创建为 ShipWorks 需要的旧名称。不过,您必须小心 id 列等,这确实不是最终用户的事情,它应该是 ShipWorks 支持调查它。
-
如果有帮助,我找到了这个链接:shipworks.com/support/…。如果您仍在使用 SQL Express,则可能值得为标准安装付费。
-
您可以做的一件事是在峰值负载时分析您的查询,找出哪些查询耗时最长;然后尝试向相关表添加一些索引以帮助 SQL Server 更快地运行查询。
标签: sql-server-2008 memory windows-server-2008