简体   繁体   English

SQL Server Express 2008 R2内存问题

[英]SQL Server Express 2008 R2 Memory Issues

I have a website running on a Windows 2008 R2 server, using a SQL Server Express 2008 R2 database, and I have been experiencing some pretty nasty memory issues the last several days. 我有一个在Windows 2008 R2服务器上运行的网站,使用SQL Server Express 2008 R2数据库,过去几天我遇到了一些非常令人讨厌的内存问题。

Here's the server stats: 这是服务器统计信息:

  • It's a Rackspace Cloud Server 它是Rackspace云服务器
  • Windows Server 2008 R2 Enterprise SP1 x64 Windows Server 2008 R2 Enterprise SP1 x64
  • Quad-Core AMD Opteron 2.34GHz 四核AMD Opteron 2.34GHz
  • 2GB RAM 2GB RAM
  • SQL Server 2008 R2 Express Edition with Advanced Services x64 带有高级服务x64的SQL Server 2008 R2 Express Edition
  • Full text indexing is being used 正在使用全文索引

The website has been running good for a few months now, but all of a sudden I've been seeing errors related to SQL Server running out of memory. 该网站已经运行了好几个月了,但突然之间我一直看到与SQL Server内存不足有关的错误。 Here are the most common exceptions I've seen: 以下是我见过的最常见的例外情况:

Warning: Fatal error 9001 occurred at Oct 22 2011 5:02AM. 警告:致命错误9001发生在2011年10月22日上午5:02。 Note the error and time, and contact your system administrator. 请注意错误和时间,并与系统管理员联系。


There is insufficient system memory in resource pool 'internal' to run this query. 资源池“internal”中的系统内存不足,无法运行此查询。


A connection was successfully established with the server, but then an error occurred during the login process. 已成功与服务器建立连接,但在登录过程中发生错误。 (provider: Shared Memory Provider, error: 0 - No process is on the other end of the pipe.) (提供者:共享内存提供者,错误:0 - 管道的另一端没有进程。)


Error: 4060, Severity: 11, State: 1. (Params:). 错误:4060,严重性:11,状态:1。(Params :)。 The error is printed in terse mode because there was error during formatting. 由于格式化期间出错,因此以简洁模式打印错误。 Tracing, ETW, notifications etc are skipped. 将跳过跟踪,ETW,通知等。 Error: 18456, Severity: 14, State: 1. (Params:). 错误:18456,严重性:14,状态:1。(Params :)。 The error is printed in terse mode because there was error during formatting. 由于格式化期间出错,因此以简洁模式打印错误。 Tracing, ETW, notifications etc are skipped. 将跳过跟踪,ETW,通知等。


Error: 3980, Severity: 16, State: 1. (Params:). 错误:3980,严重性:16,状态:1。(Params :)。 The error is printed in terse mode because there was error during formatting. 由于格式化期间出错,因此以简洁模式打印错误。 Tracing, ETW, notifications etc are skipped. 将跳过跟踪,ETW,通知等。

The website still seems to respond for the most part. 该网站似乎仍然在很大程度上作出回应。 The pages that seem to be affected the most are the ones that write to the database. 似乎受影响最大的页面是写入数据库的页面。

I have tried restarting the sqlexpress service as well as restarting the server. 我尝试重新启动sqlexpress服务以及重新启动服务器。 Both solutions fix the symptoms, but the problem comes back within about 10 to 15 hours. 这两种解决方案都可以解决症状,但问题会在10到15个小时内恢复。

When these errors occur, Task Manager reports that around 1.8GB of memory is being used. 发生这些错误时,任务管理器报告正在使用大约1.8GB的内存。 After I restart the service, the used memory drops back down to about 600MB used and very slowly climbs backup until the exceptions start showing up again. 重新启动服务后,已用内存将减少到大约600MB,并且非常缓慢地继续备份,直到异常再次出现。

All help will be greatly appreciated... thanks! 非常感谢所有帮助......谢谢!

The ERRORLOG will contain some important information about the memory allocation pattern when things started to degrade. 当事情开始降级时,ERRORLOG将包含有关内存分配模式的一些重要信息。 The lines will look similar to this: 这些行看起来与此类似:

  MEMORYCLERK_SQLGENERAL (node 1)                                  KB 
   ---------------------------------------------------------------- --------------------
   VM Reserved                                                      0
   VM Committed                                                     0
   AWE Allocated                                                    0
   SM Reserved                                                      0
   SM Commited                                                      0
   SinglePage Allocator                                             136
   MultiPage Allocator                                              0

   (7 row(s) affected)

Search your ERRORLOG files for such occurrences, the follow the guidance from How to use the DBCC MEMORYSTATUS command to monitor memory usage on SQL Server 2005 , since the output of DBCC MEMORYSTATUS and the output in the ERRORLOG due to OOM status is quite similar. 搜索ERRORLOG文件以查找此类事件,请遵循如何使用DBCC MEMORYSTATUS命令监视SQL Server 2005上的内存使用情况 ,因为DBCC MEMORYSTATUS的输出和ERRORLOG中由于OOM状态的输出非常相似。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM