Rea*_*ces 5 sql-server memory sql-server-2008-r2 vmware
我有一个用于共享点和 ssrs 的 SQL Server 2008 R2。SQL Server 承载两个实例。
有几分钟,两个实例都超时了,没有响应。
CPU 缓慢上升到 100%,两个实例均为 30%,操作系统为 30%(以及一些较小的东西)。
之后,16GB 的内存未从 SQL Server 分配,一些进程使用了几 GB 的内存(在 esxi 上不知道是哪个)。
此后,SQL Server 再次拥有最大内存量,PLE 大约为 15000。
我想知道的是,如何跟踪 SQL Server 被迫放弃内存的原因?
跟踪文件中某处的历史记录,还是 Windows 事件?(到目前为止我都击中了)
我试过:
DECLARE @log NVARCHAR(100)
SELECT @log = Substring(PATH, 1, Len(PATH) - Charindex('\', Reverse(PATH))) + '\log.trc'
FROM sys.traces
WHERE id = 1
SELECT
g.DatabaseID,
g.LoginName,
g.StartTime,
g.EndTime,
g.DatabaseName,
g.FileName,
e.name
FROM ::fn_trace_gettable(@log, 0) as g
inner join sys.trace_events e on g.eventclass = e.trace_event_id
inner join sys.trace_categories as c on e.category_id = c.category_id
inner join sys.master_files as m on g.databaseID = m.database_id and g.filename = m.name
order by StartTime desc
Run Code Online (Sandbox Code Playgroud)
但是在停电期间找不到任何东西。
如果事实证明无法找出发生这种情况的原因,我将来如何进行监控。
编辑:
SQL Server 版本:10.50.6000.34 企业版,
服务器正在 esxi 5.5 中虚拟化,
页面文件设置为 8GB。
错误日志显示了一个 sharepoint 服务用户的单次登录失败。(还有很多成功的日志备份)
更新:
从那以后,我从 VMWare 团队那里得到确认,在此期间任何相关机器上都没有发生 Vmotion。并且没有发生可能影响机器的膨胀。
我还让网络团队确认 Nagios 在与该服务器场相关的任何机器上都没有出现明显的延迟峰值。
我们已经排除了当时正在运行的任何可能的报告。
然而,在过去的统计数据中,我们还看到了 3 次其他 16GB 内存从 SQL Server 下降的事件。其中 2 项与业绩暂时下降的报告有关。
由于 SQL Server 将内存释放回操作系统,这意味着内存压力是外部的,因此您无法在 SQL Server 内部查找原因。您的答案将来自 SQL Server 外部,我知道有一种工具可以跟踪操作系统的内存分配。
Rammap https://technet.microsoft.com/en-us/sysinternals/rammap.aspx