不少用户问到,为什么网站还没开始用,内存就占用的快光了?
具体症状
上图中,服务器总物理内存为 16G,只开了网站服务(Nginx、MySQL、PHP),就已经使用了 10G,怎么回事呢?
缓冲和缓存原理分析
其实,你只要认真看下问号图标中的说明就清楚了,已使用的内存包括三个部分:
已使用内存 = 进程占用 + 缓冲区 + 缓存区
这里的进程占用,才是程序真正占用的内存。
缓冲区和缓存区,都是系统为了提高性能,把磁盘中的文件信息和内容缓存到内存中所占用的,这是有百利无害的。
把原理讲得更直白些,因为从内存中读取文件的速率是远远高于硬盘的,所以系统会自动将程序读取过的文件,缓存一份到内存中,这样下次访问时,就可以直接从内存中读取,除了能提高读取速率,还能保护你的磁盘。
缓冲和缓存区需要清理吗?占用太大不会出现问题吗?
建议不要手动清理缓冲和缓存区,因为你清理完后,下次再读取之前读取过的文件时,系统就需要重新再从磁盘上读取,不仅慢,还会影响磁盘寿命。
你根本不用担心缓冲区和缓存区占用的内存过大,因为系统会在其它进程需要使用内存时,自动把使用最不频繁的缓存清除,让出内存给进程使用。