记录一次很有意思的bug

情景是这样的:

 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

 

posted @ 2018-02-10 19:24  小哈是只笨青蛙  阅读(101)  评论(0编辑  收藏  举报