或者

解决linux服务器内存占用过大问题

作者:一只德德牛(团队-快排) 浏览:81 发布时间:2017-09-12
分享 评论 0

 今天到公司按照惯例检查了下所有服务器的状态,发现有台服务器的内存占用比平常大很多,如下图

  点击查看原图

  马上qq上问了下程序开发是否最近这1-2天改了什么东西,在得知没有改什么的情况下,马上重启了下php-fpm和nginx,重启之后看了下,内存释放出了1G,但这还不行,因为这台服务器是8G内存,平时最多使用4G多的样子,想今天使用到了7G多都快把服务器内存占用完了,很明显是不正常的,继续进行检查.

  在检查过程中,我使用了top来看到底是哪个进程占用内存最大,看了近1分钟没有发现什么,然后使用命令查看占用内存最大的10个进程:

  ps -aux | sort -k4nr | head -n 10

  也只是显示了nginx和php-fpm占用内存最大,但我重启了这两个进程,看来跟他们2个无关,我又开始怀疑是不是服务器被黑了,马上查看进程ps aux,这一看就发现了问题,有个脚本在进程里有很多个产生,马上执行下面命令进行kill掉:

  kill -9 $(ps aux | grep 进程名 |grep -v grep| awk '{print $2}')

  现在这看内存使用率,内存终于正常了,好了,再观察几分钟,没有问题退出服务器了,继续检查那个脚本的问题.

  ps:这里要强调的事,不要根据自己的直觉去随便以为是什么的问题,最好是调查清楚了再去执行,比如我这里就是根据自己的直觉以为是nginx和php-fpm的问题,还好是跟老大打了招呼重启的,不然后果很严重.

  再给大家一个查看内存占用最大的进程的命令:

  ps aux| grep -v "USER" |sort -n -r -k 4 |awk 'NR==1{ print $0}'