04.Linux问题排查步骤
CPU100%排查
- top -c :查看所有的进程 看cpu使用率 P排序
- top -Hp [pid] 查看使用cpi最高的进程下的线程
- 十六进制转换:printf “0x%x\n”
- 使用jstack -l [pid] 查看堆栈日志文件,然后根据线程的十六进制查看栈日志文件中的信息
CPU负载和CPU利用率的区别是什么?
- 负载:Load Average,他代表的是当前系统正在运行的进程和处于等待运行的进程数之和。也指的是处于可运行状态和不可中断状态的平均进程数。
- CPU 利用率:和负载不同,CPU利用率指的是当前正在运行的进程实时占用CPU的百分比,他是对一段时间内CPU使用状况的统计。
负载高,利用率低的原因及解决方法
- 说明处于等待状态的任务很多,负载越高,代表可能很多僵死的进程。通常这种情况是IO密集型的任务,大量请求在请求相同的IO,导致任务队列堆积。
- 通过ps -axjf 查看是否存在状态为D+状态的进程,这个状态指的就是不可中断的睡眠状态的进程。处于这个状态的进程无法终止,也无法自行退出,只能通过恢复其依赖的资源或者重启系统来解决
一台Linux服务器最多能支撑多少个TCP连接?
- 当目标ip和目标端口都固定时,根据源端口和源ip,可以有2的32次方+2的16次方个链接
- 考虑服务端,进程每打开一个文件(linux下一切皆文件,包括socket),在多个位置都限制了可打开的文件描述符的数量,包括系统级、用户级、进程级。
- tcp的内存占用:约是3.3kb,不是分配接收缓冲区和发送缓冲区的大小。因为TCP 连接在建立时并不会真的去分配接收缓冲区和发送缓冲区。所以
04.Linux问题排查步骤
https://x-leonidas.github.io/2022/02/01/13Linux/04.Linux问题排查步骤/