进程占用高的处理思路

系统+安全 Liemer_Lius 958℃ 0评论

1. 首先获取进程pid:

top –>

1) 如若要获取cpu占用高的, 点击c, 查看第一列的PID;

2) 如若要获取mem占用高的, 点击m, 查看第一列的PID;

2. 查看该进程所占用的文件句柄数:

单个进程占用的文件句柄数大小,需要知道进程的pid,然后在/pro目录查看:

ls /proc/1644/fd 2>/dev/null |wc -l

页面底层,注查看当前所有进程文件句柄数以及总和的脚本.

系统配置的文件句柄数限制:

其中open files表示的是单个进程最多允许打开的文件句柄数(soket连接数也算在内),默认值是1024。对于一般的程序来说,这个值是足够的,但是对于很多需要打开大量文件或者大量socket连接的程序来说,这个值就不够了。

例如web端用于存储用户登录信息和广告缓存信息的memcached程序,单个进程可以打开的socket连接数线上设置为8192。

# ulimit -a   // 文件处理大的服务器,这个数量可能很大。
core file size          (blocks, -c) 10485760
data seg size           (kbytes, -d) 10485760
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 127942
max locked memory       (kbytes, -l) 29493770
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1200000   // 120w个
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) unlimited
cpu time               (seconds, -t) unlimited
max user processes              (-u) 16384
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

如果超出了这个限制,进程就会出现异常。

3. 查看指定进程线程数

如果进程的线程数过大,资源很可能被耗尽。

# ps -o nlwp -p 27582 | tail -n1 | sed s/[[:space:]]//g

注:-o nlwp显示Number of threads, lwp显示Thread ID。

> ps -o nlwp -p 30960
NLWP
   1

> ps -o lwp -p 30960
  LWP
30960

查看当前所有进程文件句柄数以及总和的脚本:

#!/bin/bash
[ ! -d /tmp/lius.bak ] && mkdir /tmp/lius.bak
cd /tmp/lius.bak
[ ! -e proc.list ] && touch proc.list
find /proc -maxdepth 1 -type d |grep "[[:digit:]]" > proc.list
declare int sum=0
declare int pro_sum=0
for i in `cat proc.list`; do
  pro_sum=`ls $i/fd 2> /dev/null |wc -l`
  pro_pid=`echo $i |cut -d/ -f3`
  if [[ $pro_sum -ne 0 ]]; then
    echo "PID ${pro_pid}'s process number is: $pro_sum"
  fi
  let sum+=$pro_sum
done
echo "The sumary of all process is: $sum"

# ./ulimiteNum.sh
PID 1's process number is: 63
PID 596's process number is: 42
PID 608's process number is: 4
PID 641's process number is: 14
PID 1065's process number is: 32
PID 1074's process number is: 8
PID 1077's process number is: 8
PID 1079's process number is: 8
PID 1080's process number is: 8
PID 1081's process number is: 19
PID 1101's process number is: 18
PID 1103's process number is: 11
PID 1117's process number is: 20
PID 1125's process number is: 4
PID 1165's process number is: 10
PID 1169's process number is: 10
PID 1173's process number is: 7
PID 1212's process number is: 8
PID 1223's process number is: 16
PID 1233's process number is: 22
PID 1234's process number is: 8
PID 1240's process number is: 11
PID 1402's process number is: 10
PID 1572's process number is: 15
PID 1575's process number is: 7
PID 1578's process number is: 13
PID 1581's process number is: 6
PID 1592's process number is: 16
PID 1644's process number is: 5
PID 1695's process number is: 11
PID 1702's process number is: 11
PID 1706's process number is: 9
PID 1711's process number is: 88
PID 1713's process number is: 14
PID 1726's process number is: 5
PID 1741's process number is: 18
PID 1748's process number is: 8
PID 1766's process number is: 30
PID 1770's process number is: 31
PID 1771's process number is: 7
PID 1782's process number is: 7
PID 22222's process number is: 12
PID 22223's process number is: 13
PID 22226's process number is: 15
PID 22229's process number is: 7
PID 22234's process number is: 4
PID 23858's process number is: 5
The sumary of all process is: 718

 

转载请注明:liutianfeng.com » 进程占用高的处理思路

喜欢 (0)

发表回复