赛迪网 > IT技术 Linux > 最新更新
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

Linux内存耗尽后彰显VFS内存空间不足

发布时间:2006.09.25 05:05     来源:赛迪网技术社区    作者:zwwwxy

之前已经实验出linux内存管理上的确存在弱点,但是对于为什么内存耗尽后不能重启应用服务象oracle,甚至不能重启系统,也不能杀死已经无效的应用进程感到不解。这次在dep服务器上在极少的内存环境中运行旧系统,看看极限可以承受到什么水平。这个系统在512M内存和PiiCPU,比一般的桌面机还要弱,但运行了包括oracle/java/web/等多个吃内存的老虎,撑到第三天终于挂了,在处理过程中发现导致上面不能重启是由于vfs在 flush/iupdate时由于内存耗尽不能完成进程,和超块死锁造成的。

把重启测试服务器应用的cron脚本中止后,第三天,终于看到这台服务器exhausted,这再次证明linux对内存(处理上的弱点)。随后做第二个实验,恢复每小时一次的脚本应用重启,但不让服务器两天一次重启,看看可以支撑多长时间。......还没完,那台服务器重启应用后完全不能响应,而打算重启服务器本身居然也不能关机。检查看有的进程,看来用光一次后,整个系统就象特级残废一样无法恢复正常了。(十分钟以后)在让管理员硬性重启后,系统仍然没有恢复正常,报告是需要手工Ctrol-D进行fsck操作,这也是题中应有之意。但到机房进行操作,顺便加上一两G内存时,却碰上了意外的情况。

首先是不同的内存条(频率是一样的)冲突,不知为什么,却是反应为scsi硬盘寻不着道,换成同一品种后故障消失了。随后在识别几十个mount点时碰到困难——我是很讨厌那种不是使用设备标识符而使用label的fstab的,不得不一个个地查那个label对应那个标识符。最后完成后启动,ls却发现 "/"所有文件都不见了。badblock也找不到坏区,似乎是ext2链表乱了。在这个问题上翻天下地弄了差不多两个小时,默驴技穷,看来如果不是强行 fsck 根目录,就得重装根目录,然后再重整旧文件,不过这是非常危险的操作,八成等于系统重装。正在没有辄的时侯,发现dir却是有响应的:莫非是显示器没有能够显示目录色彩所以隐形了?抱着最后一丝希望把另一辆小车上的显示器推过来一接,咳,就是。瞧,显示器的质量也是可以害死人的,差点让我把一个还算是好的系统重装了。

回顾这次和以前若干次在另外的主机上的同样尝试,表明一旦 linux的内存用光后,除了新的应用请求分配内存需要等待外,更重要的是,会造成vfs进入死循环等待。估计是由于kflush以前形成高速缓存时由于没有请求到新的内存,所以锁死的某一个超块始终不能释放;其他要访问类似超块的进程也只好干等待;另一方面由于不能最后完成flush写入,进程也不能清空。这时,对于系统来说,就是原有的IO进程没有完成,这样,linux就会忽略所有的kill signal 6重启信号,等这些进程完成。这样就进入我已经重复出来的一旦内存 exhausted后不但所有应用不能恢复,就算把部分进程杀掉清出内存,也没有看出该死锁释放的迹象;或者下一次我应该多等一段时间。问题是,目前我没有找到很好的在实验室重复这种极限状态的方法,每次碰到都是在工作系统高峰时,这时侯总是急不可待要恢复系统。

某个角度看,这说明linux系统在考虑这种极端状况时vfs内存保护上做得不够,它或者应该象oracle一样申请一个全局内存区,确保vfs内存专用,不多占也不允许共享,宁愿为此承受读写性能的损失而确保系统可靠性。反过来,这样也可以简化它与其它应用分配内存时的复杂程度和可能出现的意外死锁条件的出现。也许实际上在内核安装升级时是有这样的配置的,只是我没有注意到。相比之下,windows/fat没有考虑这种高速缓存-搜索相近存储块的机制,(NTFS有类似的机制,但实行了保护内存),以承受硬盘存储块渐渐碎片化的代价避免这种极限状况下对系统的损坏。虽说windows死一次机就按一次reset可以沦为笑柄,但反过来每次硬重启都是相对健康倒也不见得不是一种优点。

我仍是推崇使用linux,原来并不是因为它的技术比windows/nt系列先进,linux实际上就是x86上的unix,基本架构产生于三十多年前,而windows则是只有十年历史,从基本架构的考虑的先进性来说,windows无疑要比 linux先进。使用linux是因为它是可控的,而且作为功能单一的服务器,比windows的平均性能比要高得多,只要不是在上面跑多种应用,它是稳定的,本人工作系统最长的uptime是 459天;这在windows是不可能做到的。

(T114)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 如何在Linux/FreeBSD下玩模拟器游戏 (09-22) · Linux源代码阅读笔记--硬件中断 (09-22)
· Linux源代码阅读笔记--内存管理 (09-22) · 功耗问题堪忧Intel欲放弃FB-DIMM内存 (09-21)
· Linux中的Winxp,国人写的Linux桌面 (09-21) · 红旗Linux桌面版5.0Snapshot版本简介 (09-21)
· 自己动手完善蓝点Linux2.0的用户权限 (09-21) · Linux操作系统实现文件管理器的共享 (09-21)
· 用于Linux系统的日志文件系统介绍 (09-21) · 深入理解Linux操作系统下的守护进程 (09-21)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
[政务][电信][金融][农业][制造业][中小企业]
[CIO][ERP][协同][IT管理][中间件][电子商务]
[政策][地方][专家][评估][辞典][博客][社区]
· 专题:一路畅通构想曲——让出行不再遭遇堵车
· CIO工作亲历:企业ERP选型不能忽视"选人关"
· 综述:信息化建设给中国监狱带来的各种变化
· 金融业风险管理和法规遵从有五点需考虑的因素
· 保险业CIO关注:该如何建立统一高效的CRM体系
· 调查显示:多数CIO对IT规划仍存在困惑和误解
  博客·论坛 ·曾剑秋·项立刚·Java学习·网管