0%

io高-故障

io高,导致服务器慢

io高检测

1
2
3
4
5
6
7
8
9
10
11
12
# 动态监测各个volume的io占用情况
iostat -x 1 10

# io占用高
iotop

#
sar 1 10

# 应用安装
yum -y install sysstat
yum install lsof

文件句柄检测

1
2
3
4
5
6
7
8
9
ulimit -a
# 查看系统打开句柄最大数量
more /proc/sys/fs/file-max
# 查看打开句柄总数
lsof|awk '{print $2}'|wc -l
# 根据打开文件句柄的数量降序排列,其中第二列为进程ID
lsof|awk '{print $2}'|sort|uniq -c|sort -nr|more

ps -ef |grep
1
2
3
4
修改linux系统参数。vi /etc/security/limits.conf 添加
*  soft  nofile  65536
*  hard  nofile  65536
修改以后保存,注销当前用户,重新登录,执行ulimit -a ,ok ,参数生效了:

问题原因:

  1. 同一分钟内,请求最多时候有10个对同一个ipa包进行重签请求
  2. linux多进程zsign对同一ipa包解压,ipa文件处理无法释放,导致io高

解决方法:

  1. 重签时,先将源包复制一份,对复制包进行重签处理
  2. 定时清除复制的包
  3. 观察是否还存在该问题;是否存在磁盘满情况

处理方法

  1. 直接kill unzip的程序
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ps -ef  |grep zip | xargs kill

    ps -ef |grep unzip | xargs kill

    pid=`ps ax | grep -i ${SERVER} |grep java | grep -v grep | awk '{print $1}'`
    if [ -z "$pid" ] ; then
    echo "No ${SERVER} Server running."
    exit 0;
    fi
    kill ${pid}
  2. 升级服务器配置
    4核8g内存升级为8核16g内存

参考

  1. centos 查看磁盘io使用情况,centos找出占用io读写很高的进程
  2. linux 文件句柄数查看命令