AppDomain 已卸载
AppDomain unloaded
我知道我以前问过这个问题,但没有得到很好的答案。由于内存压力,我的 sql 服务器 2014 不断卸载 Appdomain,我认为这与我的 CLR 有关。我现在不确定如何修复它。我已经尝试了很多东西。我会将我的日志附加到此 post。谢谢你的帮助。
自从您在这里首次发布同样的问题以来,一切都没有改变:
无法阻止 SQL 服务器能够卸载它选择的任何 AppDomain。
内存压力意味着没有太多物理内存剩余,SQL 服务器更喜欢物理 ram 而不是 swap/page 文件。以下是需要注意的事项:
- 检查您的 SQLCLR 代码。您是否正确关闭一次性物品?您是否在内存中存储了很多东西?为什么您的程序集标记为
UNSAFE
?是因为您将数据存储在静态变量中吗?您是否正在使用存在内存泄漏的 .NET 类,因此无法在 SAFE
和 EXTERNAL_ACCESS
程序集中使用(例如,使用 TimeZoneInfo
转换 DATETIME
值在两个 TimeZoneID 之间)?
- 即使 SQLCLR 代码不是 运行,服务器上还有多少可用内存? SQL 服务器是否配置为使用足够的系统内存(即检查最大服务器内存设置)。
- 除了 SQL 服务器之外,OS 上是否还有其他应用程序/进程 运行?如果是这样,它们可能会占用本应用于 SQL 服务器的物理内存。
我知道我以前问过这个问题,但没有得到很好的答案。由于内存压力,我的 sql 服务器 2014 不断卸载 Appdomain,我认为这与我的 CLR 有关。我现在不确定如何修复它。我已经尝试了很多东西。我会将我的日志附加到此 post。谢谢你的帮助。
自从您在这里首次发布同样的问题以来,一切都没有改变:
无法阻止 SQL 服务器能够卸载它选择的任何 AppDomain。
内存压力意味着没有太多物理内存剩余,SQL 服务器更喜欢物理 ram 而不是 swap/page 文件。以下是需要注意的事项:
- 检查您的 SQLCLR 代码。您是否正确关闭一次性物品?您是否在内存中存储了很多东西?为什么您的程序集标记为
UNSAFE
?是因为您将数据存储在静态变量中吗?您是否正在使用存在内存泄漏的 .NET 类,因此无法在SAFE
和EXTERNAL_ACCESS
程序集中使用(例如,使用TimeZoneInfo
转换DATETIME
值在两个 TimeZoneID 之间)? - 即使 SQLCLR 代码不是 运行,服务器上还有多少可用内存? SQL 服务器是否配置为使用足够的系统内存(即检查最大服务器内存设置)。
- 除了 SQL 服务器之外,OS 上是否还有其他应用程序/进程 运行?如果是这样,它们可能会占用本应用于 SQL 服务器的物理内存。