1.管理进程状态
(1)管理进程常用命令
kill PID ---------正常停止一个程序
kill -1 PID ------平滑重载配置文件
kill -9 PID ------强制杀死进程 (对于mysql这类有状态的慎用)
pkill Name ------批量干掉程序
killall Name ------批量干掉程序
(2)kill -l 列出所有的支持信号
我们常用的三个信号:
2.后台进程管理
早期的时候大家都选择使用&符号将进程放入后台,然后在使用jobs、bg、fg等方式查看进程状态,但太麻烦了。也不直观,所以我们推荐使用screen。
(1)开启一个screen窗口,指定名称
screen -S Name
(2)平滑的退出screen,但不会终止screen中的任务。注意: 如果使用exit 才算真的关闭screen窗口
Ctrl+ad ----关闭会话
(3)查看当前正在运行的screen
screen -list
(4)进入正在运行的screen
screen -r Name| pid
3.进程的优先级
(1)什么是优先级
优先级指的是优先享受资源,比如排队买票时,军人优先、老人优先。等等
(2)如何配置优先级
在启动进程时,为不同的进程使用不同的调度策略。
nice 值越高: 表示优先级越低,例如+19,该进程容易将CPU 使用量让给其他进程。
nice 值越低: 表示优先级越高,例如-20,该进程更不倾向于让出CPU。
nice值为0 代表属于中等
NI =0 PR=20
NI =-20 PR=0
NI = 10 PR=30
NI = 19 PR =39
nice -n 优先级数字 进程名称------启动一个程序为其设定优先级
renice -n 优先级数字 进程pid ---------调整已经启动过的进程优先级
什么是ps axo pid,command,nice |grep pid --------只查看pid command nice
4.服务器假死
(1)什么是服务器假死
所谓假死现象,是指 Linux 内核 Alive,但是其上的某个或所有操作的响应变得很慢的现象。
(2)假死的现象
- 能 Ping 通访问的服务器,但无法建立网络连接
- 系统负载非常的高。
- SSH 不能登陆或者登陆比较慢。
- 服务器上提供的服务都不能正常响应,比如:不能访问系统上部署的 Web 服务器所提供的页面。
- 在系统上做任何其它操作都没有反应或者反应较慢。
(3)如何解决假死
用nice配置sshd的优先级,分析查找故障
5.平均负载
(1)什么是平均负载
平均负载其实就是单位时间内的活跃进程数。(处于运行+处于等待运行+不可中断的进
程)
(2)平均负载与 CPU 使用率有什么关系
- 平均负载是指单位时间内,处于可运行状态和不可中断状态的进程数。所以,它不仅包括了正在使用 CPU 的进程,还包括等待 CPU 和等待 I/O 的进程。CPU 使用率,是单位时间内 CPU 繁忙情况的统计,跟平均负载并不一定完全对应
- CPU 密集型进程,使用大量 CPU 会导致平均负载升高,此时这两者是一致的;
- I/O 密集型进程,等待 I/O 也会导致平均负载升高,但 CPU 使用率不一定很高;
- 大量等待 CPU 的进程调度也会导致平均负载升高,此时的 CPU 使用率也会比较高。
(3)如何查看平均负载? - .三个数值都需要关注 综合评估
- 考虑是cpu使用率高,
- 还是cpu的IO等待过多造成过高
- 大量使用cpu进程造成过高
5.案例演示 三种场景并用 stress、mpstat、pidstat 等工具,找出平均负载升高的根源
- stress 是 Linux 系统压力测试工具,这里我们用作异常进程模拟平均负载升高的场景。
- mpstat 是多核 CPU 性能分析工具,用来实时查看每个 CPU 的性能指标,以及所有 CPU 的平均指标。
- pidstat 是一个常用的进程性能分析工具,用来实时查看进程的 CPU、内存、I/O 以及上下文切换等性能指标。
如果出现无法使用mpstat、pidstat命令查看%wait指标建议更新下软件包
wget http://pagesperso-orange.fr/sebastien.godard/sysstat-11.7.3-1.x86_64.rpm
rpm -Uvh sysstat-11.7.3-1.x86_64.rpm
场景一:CPU 密集型进程
(1)首先,我们在第一个终端运行 stress 命令,模拟一个 CPU 使用率 100% 的场景
stress --cpu 1 --timeout 600
(2).接着,在第二个终端运行 uptime 查看平均负载的变化情况
使用watch -d 参数表示高亮显示变化的区域(注意负载会持续升高)
watch -d uptime
(3).最后,在第三个终端运行 mpstat 查看 CPU 使用率的变化情况
-P ALL 表示监控所有 CPU,后面数字 5 表示间隔 5 秒后输出一组数据
mpstat -P ALL 5(单核CPU所以只有一个all和0)
(4)到底是哪个进程导致了 CPU 使用率为 100% ,可以使用 pidstat 来查询
间隔 5 秒后输出一组数据
pidstat -u 5
场景二:I/O 密集型进程
(1)首先还是运行 stress 命令,但这次模拟 I/O 压力,即不停地执行 sync
stress --io 1 --timeout 600s
(2).然后在第二个终端运行 uptime 查看平均负载的变化情况:
watch -d uptime
(3)最后第三个终端运行 mpstat 查看 CPU 使用率的变化情况:
显示所有 CPU 的指标,并在间隔 5 秒输出一组数据
mpstat -P ALL 5
(4)那么到底是哪个进程,导致 iowait 这么高呢?我们还是用 pidstat 来查询
间隔 5 秒后输出一组数据,-u 表示 CPU 指标
pidstat -u 5 1
场景三:大量进程的场景
当系统中运行进程超出 CPU 运行能力时,就会出现等待 CPU 的进程。
(1)首先,我们还是使用 stress,但这次模拟的是 4 个进程
stress -c 4 --timeout 600
(2)由于系统只有 1 个 CPU,明显比 4 个进程要少得多,因而,系统的 CPU 处于严重过载状态
watch -d uptime
(3)然后,再运行 pidstat 来看一下进程的情况:
间隔 5 秒后输出一组数据
pidstat -u 5 1