情景是这样的:
log 一直在狂打不止,直到打满了磁盘, 在上传文件的时候发现只要是超过了1m就传不上去。
解决策略
首先肯定是清除磁盘 干掉无用的log,清除了之后发现问题并没有解决,于是使用top命令查看内存使用情况 发现内存使用并不高,于是这个问题就很有意思了。
有如下几种猜测:
1.程序内存泄漏 导致内存无法有效回收
经过重启,仔细查看每个进程的内存情况发现 并非这种情况。
2.依稀记得linux文件目录有大小限制 翻阅大量文档发现大小制约的其实是Inode ,只有在大量的小文件的写入时候才会出现限制。
参考连接:http://www.ruanyifeng.com/blog/2011/12/inode.html
在经过1.2两步试错之后 发现自己可能走偏了。首先只有大小超过一定的限制之后才会无法写入,其次 程序刚开始运行没问题的。这些特征更像是触发了某种内存保护机制。
是虚拟机的参数的设置吗?
一连串的碰壁之后 幡然醒悟。 如果是虚拟机参数的设置,那么应该是在刚开始就有限制,在momery和磁盘都还未满的情况下,虚拟机应该有自动扩容的功能,不至于限制1m左右文件大小的读写。
那么就是linux本身了。
3.经过排查分析,发现linux经过内存满的时候会触发读写保护机制,当内存恢复的时候,保护机制并不会撤销。因此问题得解。
哈哈哈,这可能不算linux的bug 算是featrue 。
参考连接:http://www.it1352.com/764980.html