• 一台CentOS7 服务器,主要运行一个tomcat的服务,通常占用6G的常驻内存,整个VIRT也就是20G。 系统配置:32G内存,16G swap 系统在运行1段时间后,tomcat服务发现失联了。登陆上机器看tomcat进程已经不见了。 接...

    案例

    一台CentOS7 服务器,主要运行一个tomcat的服务,通常占用6G的常驻内存,整个VIRT也就是20G。

    系统配置:32G内存,16G swap

    系统在运行1段时间后,tomcat服务发现失联了。登陆上机器看tomcat进程已经不见了。

    接下来,查看系统日志。系统因为发现内存,虚存都双双耗尽,就把消耗大的tomcat直接给杀了!(还是不够智能阿,你没发现很多重复启动的小程序么,不把那些垃圾杀了,你杀好人?笨机器)

    继续往下查,先看top,发现物理内存现在有剩余,swap所剩无几。证明系统内存耗尽是事实。哪些还在swap里不出来?肯定是僵死进程多。僵尸,最令人讨厌了。来,我们TOP根据内存来排一下序。好了,发现上面十来条正常的进程外,下面一堆sendmail进程。

    sendmail?什么鬼?习惯找度娘,一艘,出来“Crond引发大量sendmail、postdrop进程”的帖子,说什么postfix问题会引起发mail会挂起云云。一般我们系统也不会配置什么postfix,即使配置了,也没那么容易出错,引起进程挂起,linux profix也不会傻到那种地步。里面列出了kill 进程的方法倒是有用,

    1.kill掉sendmail进程

    kill -9 $(ps -ef |grep hochoy | grep sendmail |gawk '$0 !~/grep/ {print $2}' |  tr -s '\n' ' ')

    2.kill 掉postdrop进程

     kill -9 $(ps -ef |grep hochoy | grep postdrop |gawk '$0 !~/grep/ {print $2}' |  tr -s '\n' ' ')

    但是,你kill了sendmail下面postdrop也就没有了,不用再去kill了。实际上sendmail被CROND守护,kill后还会出来的。

    下面讲改crontab配置里的MAILTO就是在瞎搞了。你把邮件通知都改了,系统有问题怎么上报?掩盖问题不可取,误人子弟。

    继续查,发现所有sendmail的父进程都指向cron job 里的一个脚本。问题很明确,这个脚本挂在那里不退出。ps 一个grep,果然,上千条。脚本写的太滥,而且没有监控自己进程号,导致重复启动。僵尸会传染,一个接一个不停的。重点服务器的脚本,特别是加到crontab里运行的,不能让初学的人来写。


     

    展开全文
  • 作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息网址: http://www.cnblogs.com/panfeng412/archive/2013/12/10/drop-caches-under-linux-system.html问题描述Linux服务器内存使用量...

    作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息

    网址: http://www.cnblogs.com/panfeng412/archive/2013/12/10/drop-caches-under-linux-system.html

    问题描述

    Linux服务器内存使用量超过阈值,触发报警。

    问题排查

    首先,通过free命令观察系统的内存使用情况,显示如下:

                 total       used       free     shared    buffers     cached
    Mem:      24675796   24587144      88652          0     357012    1612488
    -/+ buffers/cache:   22617644    2058152
    Swap:      2096472     108224    1988248

    其中,可以看出内存总量为24675796KB,已使用22617644KB,只剩余2058152KB。

    然后,接着通过top命令,shift + M按内存排序后,观察系统中使用内存最大的进程情况,发现只占用了18GB内存,其他进程均很小,可忽略。

    因此,还有将近4GB内存(22617644KB-18GB,约4GB)用到什么地方了呢?

    进一步,通过cat /proc/meminfo发现,其中有将近4GB(3688732 KB)的Slab内存:

    ......
    Mapped:          25212 kB
    Slab:          3688732 kB
    PageTables:      43524 kB
    ......

    Slab是用于存放内核数据结构缓存,再通过slabtop命令查看这部分内存的使用情况:

      OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME                   
    13926348 13926348 100%    0.21K 773686       18   3494744K dentry_cache
    334040 262056  78%    0.09K   8351       40     33404K buffer_head
    151040 150537  99%    0.74K  30208        5    120832K ext3_inode_cache

    发现其中大部分(大约3.5GB)都是用于了dentry_cache。

    问题解决

    1. 修改/proc/sys/vm/drop_caches,释放Slab占用的cache内存空间(参考drop_caches的官方文档):

    复制代码
    Writing to this will cause the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free.
    To free pagecache:
    * echo 1 > /proc/sys/vm/drop_caches
    To free dentries and inodes:
    * echo 2 > /proc/sys/vm/drop_caches
    To free pagecache, dentries and inodes:
    * echo 3 > /proc/sys/vm/drop_caches
    As this is a non-destructive operation, and dirty objects are notfreeable, the user should run "sync" first in order to make sure allcached objects are freed.
    This tunable was added in 2.6.16.
    复制代码

    2. 方法1需要用户具有root权限,如果不是root,但有sudo权限,可以通过sysctl命令进行设置:

    $sync
    $sudo sysctl -w vm.drop_caches=3
    $sudo sysctl -w vm.drop_caches=0 #recovery drop_caches

    操作后可以通过sudo sysctl -a | grep drop_caches查看是否生效。

    3. 修改/proc/sys/vm/vfs_cache_pressure,调整清理inode/dentry caches的优先级(默认为100),LinuxInsight中有相关的解释:

    At the default value of vfs_cache_pressure = 100 the kernel will attempt to reclaim dentries and inodes at a “fair” rate with respect to pagecache and swapcache reclaim. Decreasing vfs_cache_pressure causes the kernel to prefer to retain dentry and inode caches. Increasing vfs_cache_pressure beyond 100 causes the kernel to prefer to reclaim dentries and inodes.

    具体的设置方法,可以参考方法1或者方法2均可。

    参考资料

    https://www.kernel.org/doc/Documentation/sysctl/vm.txt

    http://major.io/2008/12/03/reducing-inode-and-dentry-caches-to-keep-oom-killer-at-bay/

    http://linux-mm.org/Drop_Caches

    展开全文
  • 最近买了一个centos 的云主机,因为... 又由于我安装微C微信防爆系统的的时候,提示我内存不足,所以想提高虚拟内存的方法去安装这个软件,本来都已经安装完了,今天我手贱把Linux重启了一下,没看仔细,不过也...

        最近买了一个centos 的云主机,因为贫穷限制了我购买的内存大小,只有500M,所以导致物理内存经常处于饱和状态,无奈虚拟内存设置的只有132M,理论上讲虚拟内存应该要有物理内存的2倍也就是1G大小才够用!

     

        又由于我安装微C微信防爆系统的时候,提示我内存不足,所以想用提高虚拟内存的方法去安装这个软件,本来都已经安装完了,今天我手贱把Linux重启了一下,没看仔细,不过也不是坏事情,正好记录下设置过程,以便下次再重启的时候方便设置!

     

    1.打开终端,切换到root用户,输入:free -m查看内存状态
    [maker@LLM ~]$ free -m
                  total        used        free      shared  buff/cache   available
    Mem:            992         189          79          13         722         614
    Swap:             0           0           0
    Swap也就是虚拟内存为0
    
    2.选择一个较大的分区,建立分区文件
    [root@LLM ~]# dd if=/dev/zero of=/opt/swap bs=1024 count=1024000
    1024000+0 records in
    1024000+0 records out
    1048576000 bytes (1.0 GB) copied, 16.6877 s, 62.8 MB/s
    [root@LLM ~]#
    该命令表示在opt分区建立名为swap,大小为1G的虚拟内存文件
    
    3.将swap文件设置为swap分区文件
    chmod 600 /opt/swap    //注意更改swap文件的权限
    [root@LLM ~]# mkswap /opt/swap
    Setting up swapspace version 1, size = 1023996 KiB
    no label, UUID=fc47f29e-31af-401e-856d-0fec5262179e
    
    4.激活swap,启用分区交换文件
    swapon /opt/swap
    5.现在看下结果
    [root@LLM ~]# free -m
                  total        used        free      shared  buff/cache   available
    Mem:            992         191          63          13         737         625
    Swap:           999           0         999

    虚拟内存的设置部分就完成了,接下来讲一下卸载虚拟内存,这个需求也是存在的,比如你走上人生巅峰了,不屑于使用虚拟内存,就需要卸载掉了,就是任性!

    1.首先停止swap分区
    [root@LLM ~]# swapoff /opt/swap
    [root@LLM ~]# free -m
                  total        used        free      shared  buff/cache   available
    Mem:            992         191          63          13         738         626
    Swap:             0           0           0
    
    2.其次删除掉swap文件即可
    首先看一下磁盘大小
    [root@LLM ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/vda1        40G  3.9G   34G  11% /
    devtmpfs        487M     0  487M   0% /dev
    tmpfs           497M  4.0K  497M   1% /dev/shm
    tmpfs           497M  420K  496M   1% /run
    tmpfs           497M     0  497M   0% /sys/fs/cgroup
    tmpfs           100M     0  100M   0% /run/user/0
    tmpfs           100M     0  100M   0% /run/user/1001
    [root@LLM ~]# rm -rf /opt/swap
    [root@LLM ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/vda1        40G  3.0G   35G   8% /
    devtmpfs        487M     0  487M   0% /dev
    tmpfs           497M  4.0K  497M   1% /dev/shm
    tmpfs           497M  420K  496M   1% /run
    tmpfs           497M     0  497M   0% /sys/fs/cgroup
    tmpfs           100M     0  100M   0% /run/user/0
    tmpfs           100M     0  100M   0% /run/user/1001
    
    可以看出删除后多了1G的空间

     

     

     

    展开全文
  • 又由于我安装其他工具,提示我内存不足,所以想提高虚拟内存的方法去安装这个软件,本来都已经安装完了,今天我手贱把Linux重启了一下,没看仔细,不过也不是坏事情,正好记录下设置过程,以便下次...

    最近买了一个CentOS的云主机,因为贫穷限制了我购买的内存大小,只有500M,所以导致物理内存经常处于饱和状态,无奈虚拟内存设置的只有132M,理论上讲虚拟内存应该要有物理内存的2倍也就是1G大小才够用!

    又由于我安装其他工具,提示我内存不足,所以想用提高虚拟内存的方法去安装这个软件,本来都已经安装完了,今天我手贱把Linux重启了一下,没看仔细,不过也不是坏事情,正好记录下设置过程,以便下次再重启的时候方便设置!

    1.打开终端,切换到root用户,输入:free -m查看内存状态

    [maker@LLM ~]$ free -m
                  total        used        free      shared  buff/cache  available
    Mem:            992        189          79          13        722        614
    Swap:            0          0          0


    Swap也就是虚拟内存为0

    2.选择一个较大的分区,建立分区文件

    [root@LLM ~]# dd if=/dev/zero of=/opt/swap bs=1024 count=1024000
    1024000+0 records in
    1024000+0 records out
    1048576000 bytes (1.0 GB) copied, 16.6877 s, 62.8 MB/s
    [root@LLM ~]#

    该命令表示在opt分区建立名为swap,大小为1G的虚拟内存文件

    3.将swap文件设置为swap分区文件

    [root@LLM ~]# chmod 600 /opt/swap    //注意更改swap文件的权限
    [root@LLM ~]# mkswap /opt/swap
    Setting up swapspace version 1, size = 1023996 KiB
    no label, UUID=fc47f29e-31af-401e-856d-0fec5262179e

    4.激活swap,启用分区交换文件

    swapon /opt/swap

    5.现在看下结果

    [root@LLM ~]# free -m
                  total        used        free      shared  buff/cache  available
    Mem:            992        191          63          13        737        625
    Swap:          999          0        999

    虚拟内存的设置部分就完成了,接下来讲一下卸载虚拟内存,这个需求也是存在的,比如你走上人生巅峰了,不屑于使用虚拟内存,就需要卸载掉了,就是任性!

    1.首先停止swap分区

    [root@LLM ~]# swapoff /opt/swap
    [root@LLM ~]# free -m
                  total        used        free      shared  buff/cache  available
    Mem:            992        191          63          13        738        626
    Swap:            0          0          0

    2.其次删除掉swap文件即可
    首先看一下磁盘大小

    [root@LLM ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/vda1        40G  3.9G  34G  11% /
    devtmpfs        487M    0  487M  0% /dev
    tmpfs          497M  4.0K  497M  1% /dev/shm
    tmpfs          497M  420K  496M  1% /run
    tmpfs          497M    0  497M  0% /sys/fs/cgroup
    tmpfs          100M    0  100M  0% /run/user/0
    tmpfs          100M    0  100M  0% /run/user/1001
    [root@LLM ~]# rm -rf /opt/swap
    [root@LLM ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/vda1        40G  3.0G  35G  8% /
    devtmpfs        487M    0  487M  0% /dev
    tmpfs          497M  4.0K  497M  1% /dev/shm
    tmpfs          497M  420K  496M  1% /run
    tmpfs          497M    0  497M  0% /sys/fs/cgroup
    tmpfs          100M    0  100M  0% /run/user/0
    tmpfs          100M    0  100M  0% /run/user/1001

    可以看出删除后多了1G的空间。

    展开全文
  • 一个服务器,最重要的资源之一就是内存,内存够不够用,是直接...本文介绍如何查看Linux服务器内存使用情况, 1、free命令 free -m [root@localhost ~]# free -m  total used free shared buffers cac

    一个服务器,最重要的资源之一就是内存,内存够不够用,是直接关系到系统性能的关键所在。

    本文介绍如何查看Linux服务器内存使用情况


    1、free命令

    free -m

    [root@localhost ~]# free -m
                total       used       free     shared    buffers     cached
    Mem:          1526        182       1344          0         16         99
    -/+ buffers/cache:         65       1460
    Swap:         3071          0       3071

    很清晰明白的显示出了总内存多少,已使用多少,还剩下多少。


    2、top命令


    top命令中的显示结果中有这样两行:

    Mem:   1563088k total,   186784k used,  1376304k free,    17444k buffers
    Swap:  3145720k total,        0k used,  3145720k free,   101980k cached

    以k为单位显示出来的。


    3、vmstat命令


    [root@localhost ~]# vmstat
    procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
    r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
    0  0      0 1376320  17452 101980    0    0     1     1    4    5  0  0 100  0  0



    原文地址:http://www.whosmall.com/post/133

    展开全文
  • 手动释放Linux服务器内存  在服务器运行过程中,使用free -m查看服务器内存时,经常会发现free值很小,有些同学就会很紧张,总想采取一些措施,使得free值看起来高一点,心里就比较爽一点。其实,个人觉得这完全...
  • 查询服务器内存占用情况,使用命令: du -sh /* | sort -nr 通过上边的命令查询会显示出文件的大小,再进入大小异常的文件(比如:在usr文件大小异常,进入usr,运行命令 : du -sh /usr/*|sort -nr ),这样就能定位...
  • 结果在安装需要大量内存的软件的时候 内存不够用linux自动杀死了这个安装过程…. 解决方案 : 创建 swap 分区 1 创建文件夹 mkdir /developer/2设置交换分区大小 dd if=/dev/zero of=/developer/swap bs=2048 ...
  • 解决linux服务器内存占用过大问题 来源:本站转载 作者:佚名 时间:2013-10-26 TAG: 我要投稿  今天到公司按照惯例检查了下所有服务器的状态,发现有台服务器的内存占用比平常大很多,如下图 马上qq上问了...
  • 命令查看Linux服务器状态
  • 问题描述:top命令查看服务器64内存使用情况,used/Mem使用率高达95%,但top命令查看内存使用并不是特别高。 Mark: top命令详解查看后,used并不是指已使用的内存大小,而是指现在系统内核控制的内存数,空闲...
  • 文章目录Linux 服务器内存处理相关1、free 命令2、查看进程的内存占用情况3、查看内存占用最高的前204、动态查看内存的使用情况 Linux 服务器内存处理相关 1、free 命令 以kb形式查看内存使用情况 free total ...
  • 平常的工作中,在衡量服务器的性能时,经常会涉及到几个...在第一篇文章中,我们介绍了一个重要的指标就是负载(Load),其中我们提到Linux的负载高,主要是由于CPU使用、内存使用、IO消耗三部分构成。任意一项使用...
  • 每个项目都要部署在服务器上,那么服务器的安全性能和一些基本情况是我们需要了解的,比如服务器CPU、内存、文件系统、磁盘IO、还有一些网络连通性等等,这些操作很多项目组都是安排一个特定的巡检人员来完成,那么...
  • free命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。 直接输入free命令,显示如下 free命令默认是显示单位kb,可以采用free -m和free -g命令查看,分别表示MB和GB ...
  • 图一时之快:手动释放Linux服务器内存 在服务器运行过程中,使用free -m查看服务器内存时,经常会发现free值很小,有些同学就会很紧张,总想采取一些措施,使得free值看起来高一点,心里就比较爽一点。其实,个人...
  • java程序 监控Linux内存监控 邮件预警
  • 在编写linux服务器过程中,由于没有图形界面以供调试,并且在多线程的情况下,很多时候跟代码的方式是找不出问题所在的,那么遇到这类异常崩溃的时候我们如何定位问题呢?答案是打印崩溃调用堆栈。 首先我们...
  • 2先执行以下free -m,查看服务器内存缓存使用情况 free -m 3执行sysctl -wvm.drop_caches=3 ,清空缓存。 4执行free -m查看清除后的情况,可以看到缓存已经释放。free增加! 原: 执行后
  • 转自:http://hi.baidu.com/chinalwb/item/a88e47c8da2e4f14b77a24d6 查看内存使用情况,可以使用命令 free -m 其结果大致如下:  total used free shared buffers cached Mem
1 2 3 4 5 ... 20
收藏数 332,109
精华内容 132,843
关键字:

linux 服务器内存不够用