可靠性(reliability)是指在规格时间间隔内和规定条件下,系统或部件执行所要求功能的能力,可靠性强调一个持续状态,是一个产品得以持续发展的生命线。
由于在实际生产环境中场景复杂,会存在很多意外情况,我们通常会在后端进行模拟某些极端场景下的可靠性测试
一、进程可靠性
1、进程:就是正在进行中的程序
1、用户角度: 进程是程序的一次动态执行过程
2、操作系统: 进程是操作系统分配资源的基本单位,也是最小单位
2、中断处理:
CPU一次只能处理一个程序,CPU速度很快,而内存很慢,所以CPU会有大量的时间都是空闲的。而CPU又是很昂贵的,为了解决浪费CPU的情况,就出现了中断处理,将程序分成一小片一小片的,这个进程执行一点,那个进程执行一点。虽然在内部进程的执行是一段一段的,但是CPU的速度很快的(速度都是纳秒级别的),所以我们是感受不到进程执行过程中的停顿的。
- 进程常见的状态:
运行状态(R)
正在运行或在运行队列中等待
睡眠状态(S)
休眠中, 进程在等待事件的完成
不可中断睡眠状态(D)
指的并不是CPU不影响外部硬件中断,而是指进程不影响异步信号。进程通常会等 待IO的结束
僵尸状态(Z)
进程已经终止,但进程的描述符存在,直到父进程调用wait或waitpid系统调用后释放
停止状态(T)
进程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号停止运行
- 进程查看:
ps提供了很多的选项参数,常用的有以下几个:
l:长格式输出
u:按用户名和启动时间的顺序来显示进程
j:用任务格式显示进程
f:用树形格式显示进程
a:显示所有用户的所有进程
x:显示无控制终端的进程
r:显示运行中的进程
ww:避免详细参数被截断
- 常用的kill信号量:
“信号”是指那些被异步发送到一个程序的事件。默认情况下,它们通常会终止一个程序的运行。常用的一些信号量:1 6 9 15
释义:
SIGHUP 终止进程 终端线路挂断
SIGINT 终止进程 中断进程
SIGQUIT 建立CORE文件 终止进程,并且生成core文件
SIGILL 建立CORE文件 非法指令
SIGTRAP 建立CORE文件 跟踪自陷
SIGBUS 建立CORE文件 总线错误
SIGSEGV 建立CORE文件 段非法错误
SIGFPE 建立CORE文件 浮点异常
SIGIOT 建立CORE文件 执行I/O自陷
SIGKILL 终止进程 杀死进程
SIGPIPE 终止进程 向一个没有读进程的管道写数据
SIGALARM 终止进程 计时器到时
SIGTERM 终止进程 软件终止信号
SIGSTOP 停止进程 非终端来的停止信号
SIGTSTP 停止进程 终端来的停止信号
SIGCONT 忽略信号 继续执行一个停止的进程
SIGURG 忽略信号 I/O紧急信号
SIGIO 忽略信号 描述符上可以进行I/O
SIGCHLD 忽略信号 当子进程停止或退出时通知父进程
SIGTTOU 停止进程 后台进程写终端
SIGTTIN 停止进程 后台进程读终端
SIGXGPU 终止进程 CPU时限超时
SIGXFSZ 终止进程 文件长度过长
SIGWINCH 忽略信号 窗口大小发生变化
SIGPROF 终止进程 统计分布图用计时器到时
SIGUSR1 终止进程 用户定义信号1
SIGUSR2 终止进程 用户定义信号2
SIGVTALRM 终止进程 虚拟计时器到时
- 服务:是无界面的可靠的一个组件
服务端会运行很多服务,我们常用的一些模拟服务故障的途径有:
(1)封装的启停脚本:start|stop|restart|reload|force-reload|bootstrap
(2)systemctl [OPTIONS...] {COMMAND} ...
二、节点可靠性
- 节点:就是单个服务器,多个服务器通过网络连接组成集群
常见的一些模拟节点故障命令:
关机:shutdown
shutdown -a 取消关机
shutdown -s 关机
shutdown -f 强行关闭应用程序
shutdown -m \\计算机名 控制远程计算机
shutdown -i 显示“远程关机”图形用户界面,但必须是Shutdown的第一个参数
shutdown -l 注销当前用户
shutdown -r 关机并重启
shutdown -s -t 时间 设置关机倒计时
shutdown -h 休眠
重启:reboot
-n : 在重开机前不做将记忆体资料写回硬盘的动作
-w : 并不会真的重开机,只是把记录写到 /var/log/wtmp 档案里
-d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d)
-f : 强迫重开机,不呼叫 shutdown 这个指令
-i : 在重开机之前先把所有网络相关的装置先停止
下电:poweroff、poweron
-n:关闭操作系统时不执行sync操作;
-w:不真正关闭操作系统,仅在日志文件“/var/log/wtmp”中;
-d:关闭操作系统时,不将操作写入日志文件“/var/log/wtmp”中添加相应的记录;
-f:强制关闭操作系统;
-i:关闭操作系统之前关闭所有的网络接口;
-h:关闭操作系统之前将系统中所有的硬件设置为备用模式。
halt:关闭系统
-d:不要在wtmp中记录;
-f:不论目前的runlevel为何,不调用shutdown即强制关闭系统;
-i:在halt之前,关闭全部的网络界面;
-n:halt前,不用先执行sync;
-p:halt之后,执行poweroff;
-w:仅在wtmp中记录,而不实际结束系统。
奔溃:echo c > /proc/sysrq-trigger
三、网络可靠性
- 硬件故障
连接器件、线路故障(损坏、脱落等)
- 软件故障
网络风暴,IP冲突,网口闪断,交换机配置丢失,网卡故障,时延丢包等
一些常用命令:ifdown/up systemctl restart network.service 域名重定向(修改hosts)
Tc命令:
Linux 下 TC 命令详解与事例_eydwyz的博客-CSDN博客_linux tc命令
四、系统可靠性
系统可靠性测试主要验证四个指标
成熟性:指系统避免因错误的发生而导致失效的能力
容错性:在系统发生故障或违反指定接口的情况下,系统维持规定的性能级别的能力
易恢复性:系统发生失效情况下,重建规定的性能级别并恢复受直接影响的数据的能力
依从性:系统依附于可靠性相关的标准、约定和规约的能力。
- 内存
内存泄漏保护机制(cgroup)、高压下内存泄漏问题、高内存占用率下系统运行稳态
- Cpu
高cpu下系统运行稳态
- Linux压测工具stress
stress是一款压力测试工具,可以用它来对系统CPU,内存,以及磁盘IO生成负载
五、时间可靠性
- 时间跳变故障
- 时钟源同步故障
- 节点间时间同步故障
六、盘级可靠性(服务器)
1、盘级故障
一般分为缓存盘、主存盘、系统盘
故障场景:插拔、高温、smart信息超标等