- 论坛徽章:
- 0
|
我们的程序需要读写大量的数据,但是在发现这样一个问题,但我们读写某个文件后,系统就把此部分操作进行了缓存
导致现在出现文件缓存不断的增大,使用free命令后发现,总共4G的内存,文件缓存就占了3.9G.现在程序在系统上运行的效率很差,资源不足.
我们分析的情况可能是2个问题:
1.linux系统的文件缓存机制是不可释放的(除非把那个文件给删除了,那么文件缓存就能释放),所以导致系统内
存越来越少.当内存用完时(其实真正大部分内存被cache占用,但没有释放),就导致可能系统使用交换分区,导致
系统运行长时间后速度越来越慢!
2.以上观点是基于我们原来的观点:linux系统下文件缓存是不可手工释放的(除非删除源文件)
如果我们的观点错误的话,那么可能是这样的情况,cache中的资源是可再利用的,那么当内存不足时,假如其
他程序再申请内存,系统将回权衡效率,是从cache中取资源呢?还是从交换分区中取资源?由于此是cache也是
非常的大,很有可能从cache中取回资源的效率也很差,所以就从swap中取,导致性能越来越差.
现在问题正解决中,希望大家发表下观点,不知道有什么解决方法没?
关键是如何解决所囤积的大量文件缓存!
开发环境是RedHat AS3 + oracle 10g
程序将会读取本地的大量数据(doc,pdf,ppt等各种文件类型),生成新文件进行分析和存储,并将某些相关信息存储到数据库中.
[ 本帖最后由 sdeven.lee 于 2006-11-22 11:10 编辑 ] |
|