我有一个Windows 2008 R2 (64位),在一个4GB的电话服务器上运行一个64位的火鸟2.1.4.18393_0安装。
一段时间后,任务管理器显示所有内存都被使用了,但是所有进程的内存之和并没有叠加到内存的一半。不幸的是,它开始交换了。
使用RAMMAP,我可以看到我的整个数据库文件被映射到内存中。这是仅在windows服务器2008 r2和windows 7 64位。我可以使用firebird 32或64位的安装,不重要。
我怎么才能阻止这一切?为什么这只出现在w2k8r2和w7中?
tks预先
**最新情况
显然,这是由文件系统缓存使用的所有内存。微软的文档解释说,这是windows、2k3、vista和2k8中的一个问题,但它在7和2k8r2中得到了解决。还补充道,此问题在64位主机中更为常见。(http://support.microsoft.com/kb/976618)
有一些工具(DynCache、setcache和windows中的Get/SetSystemFileCacheSize系统调用)允许我修正fscache对内存使用的上限,但是文档认为我不应该在w2k8r2中这样做,因为它会严重影响整个系统性能。不管怎样,我试过了,性能保持不变,页面文件的使用也保持不变,尽管现在有更多1gb的空闲内存。
发布于 2011-08-19 00:11:37
问题还是解决了。这是一点窗口调整和一点火鸟调音。
在windows方面,setcache确实起到了控制文件系统缓存大小的作用,即使微软说我不需要这样做。我刚刚添加了一个调度任务,以便在每次引导中运行。
但是,即使在降低了内存使用量之后,我的firebird数据库仍然使用了我的双四核盒的12.5%:一个核心的100%,性能很差(从一个只有10个元组的表中选择所有元组的性能都很差)。
在对sinática (www.sinatica.com)进行了一些监视之后,我意识到我的数据库正在被扫描。因此,我禁用自动扫描,并增加了另一个时间表任务,以做2天的基础上进行清扫。
发布于 2012-03-28 11:02:37
下面是关于这个问题的最新情况(希望能有所帮助):
http://dyemanov.blogspot.com.br/2012/03/firebird-vs-windows-file-system-caching.html
因此,唯一有效的解决方案似乎是从用于创建/打开文件的Windows调用中禁用随机访问请求(即删除FILE_FLAG_RANDOM_ACCESS标志)。此外,在这种情况下,文件系统缓存大小限制不应该是实际的,因为Windows不会将缓存扩展到合理的边界之外。..。此解决方案已提交到Firebird 2.1.5、Firebird 2.5.2和Firebird 3.0分支中。
发布于 2014-06-05 11:01:28
可以通过使用Microsoft DynCache工具来缓解此问题。如果不能将FireBird服务器更改为没有缓存错误的版本,例如,当使用需要停用版本的软件时,此解决方案适用。
由于DynCache的获取和正确设置有点困难,请参阅有关如何在此处使用它的说明:http://sqlblogcasts.com/blogs/grumpyolddba/archive/2009/03/18/x64-memory-problems.aspx
https://serverfault.com/questions/302172
复制相似问题