环境:
我正在将ASP.NET MVC 5应用程序部署到服务器上。
在任务管理器上,Server内存使用量在一小时内迅速增长,超过5G,并且网站已经失效。
Server内存消耗正在以恒定的速度增长,但从未减少过。
如何在Server中找到此内存消耗的原因?
我买得起任何商业解决方案。我只需要找到这个记忆泄漏。
我只使用了telerik的跟踪,但我没有发现任何奇怪的地方,似乎所有dbcontext连接都被释放了。
但是,我只看到当dbcontext连接未被释放时,sql服务器的内存消耗很高。
我该怎么办?
如何找到这个内存泄漏?
发布于 2014-08-02 09:32:17
我非常怀疑这是一个内存泄漏-你是否定义了一个最大值。Server的内存大小?

如果不是-这是正常的行为。
除非被告知,否则SQL Server将占用越来越多的内存来保存用于在内存中回答查询的数据库页(而不是一次又一次地从磁盘获取它们)。
它将使用它所能获得的所有内存,或者尽可能多地使用它作为最大的内存。它从不释放内存-- Server如何知道在下一个传入请求中不会使用给定的数据库页?它只是尽可能地将页面保存在内存中--直到内存耗尽(物理内存或配置内存)。
发布于 2014-08-02 09:33:17
常识和文件。
Server将使用所有内存作为缓存(有限制它的设置),因为它假定可以重用数据。THis是它变得更快的方式。磁盘,甚至是SSD,都比RAM慢得多,因此任何缓存命中都有很大帮助。
如果您真的坚持在一些低规格的东西上运行sql服务器,那么我建议您为内存的使用设置一个实际的限制。
https://stackoverflow.com/questions/25093444
复制相似问题