ipcs / ipcrm 的用法
今天突然收到某到机器的swap为0 的告警, 登录服务器后发现, 这个服务器上并没有服务对外提供,使用free -m发现剩余的swap的确为0, 这会是什么原因呢?
使用top , 发现正在运行的进程的内存占用情况都很低, 继续困惑。 突然想起之前的几例swap用光的案例, 好像都是因为共享内存开的太大且没有使用造成的,
故ipcs一看, 我的亲, 发现共享内存开的多而大, 且nattach的数目都为0, ipcs -mp , ps -ewwf | grep $cpid 发现进程也都不存在。
估计是使用共享内存的进程已经退出, 但是这些共享内存又没有清除, 所以这些共享内存占用的内存页面长时间没有处于活动状态, 所以都交换到swap分区里去了
然后造成swap分区用光。
ipcs 打印出目前正在使用的共享内存, 消息队列,还有 Semaphore Arrays 的信息
ipcs -mt 查看共享内存的时间
ipcs -mp 查看使用过共享内存的pid
ipcs -m nattach的意思是 now attach, 表示目前正在使用共享内存的进程数目
shmid ipcrm -m $shmid
shmkey ipcrm -M $shmkey
ipcs -m | grep $user | awk '$6>0{ print $2 }' | xargs -n 1 ipcrm -m
swap跟某个进程没有直接的关系
man shmctl 发现通过这个系统调用, 还可以知道这些共享内存有多少使用的物理内存, 有多少使用的swap
阅读(1073) | 评论(0) | 转发(0) |