top显示的free mem不足怎么办?

top显示的free mem不足怎么办?

  • 这几天监控服务器运行状态,一开始的时候进程运行良好,性能稳定,
  • 然后第二天再去查看进程状态,系统内存等,使用top命令,发现异常

    查看日志发现测试环境用户量并不是很大,完全在可预范围内,但是内存消耗的差不多了, 也就是在 Linux 下用 Top 命令显示系统的物理内存消耗速度惊人,才16小时左右 8 G 的物理内存仅剩不到 2G 空闲空间, 如按这种速度下去再过8小时物理内存将完全耗尽,从而对系统稳定性提出严重质疑。

  • 这是为啥呢?

  • 查看资料发现,linux os 与window os对于内存的管理使用思路大不相同,正常情况下, Linux 运行程序后,会将尽可能多的可用物理内存分配给 buffers/cache , 以充份利用物理内存(这点和 Windows 不同, windows 即使还有空闲物理内存,也会按比例使用虚拟内存, 尽可能少的使用内存,以预留更多的内存运行更多的程序,保证window上启动新的程序速度快), 所以我们看到 top 中 空闲内存在不断减少,而 buffers 数目增加。
  • 因此得出结论

    Top 命令显示的物理内存使用情况并不能代表系统中内存真正的使用状态, 我们知道 Linux 下的内存主要用于三个部份。 1、 系统内核使用, 2、系统内核调用的各应用程序(如 IceWarp 的各项服务)使用, 3、Buffers 和 Cache 。 第1,2部份我们就不讲了, 第3部份的 buffers /Cache 就是系统的缓冲区和缓存,主要用于存储程序执行时所需的数据, 以及缓存需要写入和读出的磁盘文件,以减少对磁盘 IO 的访问及所带来的压力。

    已运行的程序(如 IceWarp 的各项服务)后续使用的内存绝大多数来自于 buffers/cache 中空闲的 buffers/cache(总buffers/cache= 已用 buffers/cache + 空闲 buffers/cache ), 所以我们可以理解为程序可使用的内存= 空闲物理内存+ 空闲 buffers 。因此并不是空闲物理内存减少就表示内存不足。

  • 所以查看内存状态,尽量使用free命令
    free -m

    总共可使用的内存大小 = 136 + 6407

  • 那么如何确定系统内存真的不足呢?每次都要计算吗?其实也不用,就是看系统的 swap 空间否经常被使用,并且使用量会持续的增加。

  • linux os 没有用户进程运行的时候想释放缓存怎么办?那就尝试如下命令吧

发表评论

电子邮件地址不会被公开。 必填项已用*标注

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax