基础知识及其概念
OSI七层模型
应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
典型协议
应用层协议
HTTP,HTTPS: 提供网站服务
FTP: 实现文件共享、传输
SMTP: 发送邮件
POP3: 接收邮件
IMAP4: 支持附件功能
SSH: 实现Linux主机加密、远程连接
DHCP: 动态主机配置协议
FTP: 文件传输协议
NFS: 网络文件系统
DNS:域名系统
传输层协议
TCP:传输控制协议
UDP:用户数据报协议
网络层协议
IP:网际互连协议
ICMP:检测网络通信(ping)
ARP:根据IP地址解析MAC地址
常见服务端口
20: FTP数据端口
21: FTP服务器开放端口,用于上传下载
22: ssh安全外壳协议
23: telnet远程终端协议
25: SMTP(简单邮件传输协议)
53: DNS(域名系统)
67: DHCP 端口发放IP
68: DHCP 发送超过和失败回应
80: HTTP超文本传输协议
123: NTP网络时间协议
443: HTTPS超文本传输安全协议
873: rsync文件传输服务
3306: MySQL数据库
9000: php-fpm
进程查看及其调度
进程是资源分配的最小单位
线程是CPU调度的最小单位
进程查看
查看当前终端的进程
[root@hosta ~]# ps
PID TTY TIME CMD
6841 pts/0 00:00:00 bash
7141 pts/0 00:00:00 ps
CMD
进程名称
PID
进程ID
查看所有进程
[root@hosta ~]# ps aux | less
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 190976 3828 ? Ss 09:04 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 09:04 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 09:04 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 09:04 0:00 [kworker/0:0H]
RSS 物理内存集
进程所消耗物理内存大小
VSZ 虚拟内存集
物理内存 + 共享内存 + swap(可能)
共享内存(实现进程间通信)
[root@hosta ~]# ps -elf
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1 0 0 80 0 - 31360 ep_pol 11:01 ? 00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
1 S root 2 0 0 80 0 - 0 kthrea 11:01 ? 00:00:00 [kthreadd]
1 S root 3 2 0 80 0 - 0 smpboo 11:01 ? 00:00:00 [ksoftirqd/0]
1 S root 5 2 0 60 -20 - 0 worker 11:01 ? 00:00:00 [kworker/0:0H]
1 S root 6 2 0 80 0 - 0 worker 11:01 ? 00:00:00 [kworker/u256:0]
1 S root 7 2 0 -40 - - 0 smpboo 11:01 ? 00:00:00 [migration/0]
1 S root 8 2 0 80 0 - 0 rcu_gp 11:01 ? 00:00:00 [rcu_bh]
PPID
父进程ID
查看内存容量
[root@hosta ~]# free -m
total used free shared buff/cache available
Mem: 3932 111 3686 11 133 3614
Swap: 2047 0 2047
进程状态
CPU按时间切片调度执行多个任务/进程
R
运行状态
S
可中断的睡眠状态
D
不可中断的睡眠状态
T
终止状态
Z
僵尸进程
当进程被销毁时,父进程没有办法回收内存资源
孤儿进程/僵尸进程
1、孤儿进程:子进程执行完毕时发现父进程已退出,子进程变成为了孤儿进程。孤儿进程后期会被系统的 init 进程接管,并 wait/waitpid 其执行状态做回收处理。对系统并无危害。
2、僵尸进程:子进程执行完毕时发现父进程未退出,会向父进程发送 SIGCHLD 信号。但父进程没有使用 wait/waitpid 或其他方式处理 SIGCHLD 信号来回收子进程,子进程变成为了对系统有害的僵尸进程。
僵尸进程无法被系统有效的回收,ps 查看时状态为 Z 的即为僵尸进程,或 top 命令可直接看到 zombie 的个数。僵尸进程的父进程此时一定仍在运行,产生僵尸进程的元凶其实是他们的父进程,杀掉父进程,僵尸进程就变为了孤儿进程,便可以转交给 init 进程回收处理。
查看CPU的个数
[root@hosta ~]# nproc
4
[root@localhost ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
查看进程树
[root@hosta ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
├─VGAuthService
├─agetty
├─auditd───{auditd}
├─crond
├─dbus-daemon
├─irqbalance
获取进程ID
[root@hosta ~]# pidof vim
9580
[root@hosta ~]# pgrep vim
9580
动态查看进程
[root@hosta ~]# top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 125440 3852 2588 S 0.0 0.1 0:02.03 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.03 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 0:00.09 kworker/u256:0
7 root rt 0 0 0 0 S 0.0 0.0 0:00.02 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:00.87 rcu_sched
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain
11 root rt 0 0 0 0 S 0.0 0.0 0:00.06 watchdog/0
12 root rt 0 0 0 0 S 0.0 0.0 0:00.06 watchdog/1
13 root rt 0 0 0 0 S 0.0 0.0 0:00.02 migration/1
14 root 20 0 0 0 0 S 0.0 0.0 0:00.03 ksoftirqd/1
查看主机性能状态
CPU
查看CPU的平均负载
[root@hosta ~]# uptime
14:59:17 up 3:58, 3 users, load average: 0.00, 0.01, 0.04
平均1分钟、5分钟、15分钟的负载值
[root@hosta ~]# top
top - 15:00:51 up 3:59, 3 users, load average: 0.00, 0.01, 0.04
查看CPU的使用率
# top
%Cpu0 : 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
数字1 显示每个CPU的使用率
us
用户进程占用的CPU百分比
sy
系统进程占用的CPU百分比
id
空闲CPU
[root@hosta ~]# mpstat 1 3
Linux 3.10.0-957.el7.x86_64 (hosta) 01/04/2022 _x86_64_ (4 CPU)
03:38:14 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
03:38:15 PM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
03:38:16 PM all 0.00 0.00 0.25 0.00 0.00 0.00 0.00 0.00 0.00 99.75
03:38:17 PM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
Average: all 0.00 0.00 0.08 0.00 0.00 0.00 0.00 0.00 0.00 99.92
内存
# top
KiB Mem : 4026384 total, 3704136 free, 126636 used, 195612 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 3659052 avail Mem
[root@hosta ~]# free -m
total used free shared buff/cache available
Mem: 3932 123 3617 11 191 3573
Swap: 2047 0 2047
动态查看内存的使用率
[root@hosta ~]# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 144936 164 3759652 0 0 2 245 11 15 0 0 100 0 0
0 0 0 144904 164 3759652 0 0 0 0 52 61 0 0 100 0 0
0 0 0 144912 164 3759652 0 0 0 0 51 69 0 0 100 0 0
0 0 0 144912 164 3759652 0 0 0 0 56 60 0 0 100 0 0
1 0 0 144912 164 3759652 0 0 0 0 32 47 0 0 100 0 0
硬盘
查看硬盘容量
[root@hosta ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 18G 1.9G 16G 11% /
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 12M 2.0G 1% /run
硬盘IO
[root@hosta ~]# iostat 1 3
Linux 3.10.0-957.el7.x86_64 (hosta) 01/04/2022 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.01 0.00 0.16 0.03 0.00 99.80
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 2.52 9.58 1046.38 150181 16402101
scd0 0.00 0.07 0.00 1028 0
dm-0 2.49 8.79 1046.25 137726 16400053
dm-1 0.01 0.16 0.00 2460 0
kB_read/s
每秒读取的字节数
KB_wrtn/s
每秒写入的字节数
网卡
查看网卡的宽带
[root@hosta ~]# ethtool ens33 | grep -i "speed"
Speed: 1000Mb/s
查看网卡IO
[root@hosta ~]# sar -n DEV
Linux 3.10.0-957.el7.x86_64 (hosta) 01/04/2022 _x86_64_ (4 CPU)
09:04:16 AM LINUX RESTART
09:10:01 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
09:20:01 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
09:20:01 AM ens33 0.85 0.57 0.07 0.07 0.00 0.00 0.00
09:30:01 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
09:30:01 AM ens33 1.80 1.08 0.15 0.13 0.00 0.00 0.00
09:40:01 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
09:40:01 AM ens33 0.94 0.58 0.08 0.09 0.00 0.00 0.00
09:50:01 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
09:50:01 AM ens33 0.24 0.19 0.02 0.02 0.00 0.00 0.00
rxpck/s
每秒接收的数据包个数
txpck/s
每秒发送的数据包个数
rxkB/s
每秒接收的数据量,单位KB
txkB/s
每秒发送的数据量,单位KB
RAID
1、核心关注点
加快数据读写速度
加强数据可靠性
2、RAID 0 条带
优势
加快数据读写速度
劣势
无数据冗余
至少2块硬盘
3、RAID 1 镜像
优势
增加数据可靠性
劣势
浪费1/2的存储空间
至少2块硬盘
4、RAID 5
优势
加快数据读写速度、增加可靠性
存储数据、数据校验码
至少3块硬盘
最多支持同时坏1块盘
实际存储容量 n-1/n
5、RAID 6
优势
加快数据读写速度、增加可靠性
与RAID 5惟一的区别
RAID 6同时支持块两块盘
6、RAID 10
优势
加快数据读写速度、增加可靠性
劣势
浪费1/2存储空间
至少4块盘
浏览器中网址访问过程
利用DNS协议进行域名解析
建立tcp协议三次握手过程
客户端发出访问网站相应页面请求(发出http协议请求报文)
服务端发出相应访问页面的请求信息(发出http响应报文)
断开tcp协议四次挥手过程