Linux调试

26 阅读1分钟

当发现CPU或内存等资源消耗极高时, 需要确认是哪个进程、线程占用得多,为什么占用得多。

找到线程及其堆栈信息

  1. top指令 找到 进程id(pid)
  2. Shift+h 找到占用高的 线程id 2.1 先 top -p <pid> 2.2 再按Shift+h, 线程id列名是pid,但实际是线程id (或者直接 top -p <pid> -H) 2.3 将其值转为x16进制,可通过printf %x <线程id> && echo 得到
  3. 执行jstack查看地堆栈信息 jstack <pid> | grep -A 10 <16进制线程id>

查看TIMED_WAITING状态的连接数

jstack <pid> | grep TIMED_WAITING | wc -l

文件句柄数

文件句柄数不只包含文档,还包含线程、TCP连接等

设置最大句柄数

vim /etc/security/limits.conf 配置

  • soft nproc 65535
  • hard nproc 65535
  • soft nofile 65535
  • hard nofile 65535 重启生效 可通过ulimit -n 看当前设置

负载

CPU

推荐控制在80%以下

内存

虚拟内存最好0%

磁盘

iostat iotop

网络

nload