Linux学习笔记(三十)日常运维二

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习笔记(三十)日常运维二相关的知识,希望对你有一定的参考价值。

一、iostat、free
iostat -x 磁盘使用
技术分享图片
rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s
wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s
r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s
w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s
rsec/s: 每秒读扇区数。即 delta(rsect)/s
wsec/s: 每秒写扇区数。即 delta(wsect)/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
wkB/s: 每秒写K字节数。是 wsect/s 的一半。(需要计算)
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。

iotop 磁盘使用
yum install -y iotop
技术分享图片

free 查看内存使用情况
-b:以Byte为单位显示内存使用情况;
-k:以KB为单位显示内存使用情况;
-m:以MB为单位显示内存使用情况;
-o:不显示缓冲区调节列;
-s<间隔秒数>:持续观察内存使用状况;
-t:显示内存总和列;
-V:显示版本信息。

buffer/cache区别
公式:total=used+free+buff/cache
avaliable包含free和buffer/cache剩余部分
0000(磁盘)--》内存(cache )---》cpu //缓存
0000(cpu)--》内存(buff)--》磁盘 //缓冲
二、ps
ps 查看系统进程
用法:ps aux、ps -elf
技术分享图片

技术分享图片
ps aux | grep mysql 查看mysql的进程
STAT部分说明
D 不能中断的进程
R run状态的进程
S sleep状态的进程
T 暂停的进程
Z 僵尸进程
< 高优先级进程
N 低优先级进程
L 内存中被锁了内存分页
s 主进程
l 多线程进程

  • 前台进程

ls -l /proc/进程号/ 查看进程所在的位置
线程与进程

线程的出现是为了降低上下文切换的消耗,提高系统的并发性,并突破一个进程只能干一样事的缺陷,使到进程内并发成为可能。

假设,一个文本程序,需要接受键盘输入,将内容显示在屏幕上,还需要保存信息到硬盘中。若只有一个进程,势必造成同一时间只能干一样事的尴尬(当保存时,就不能通过键盘输入内容)。若有多个进程,每个进程负责一个任务,进程A负责接收键盘输入的任务,进程B负责将内容显示在屏幕上的任务,进程C负责保存内容到硬盘中的任务。这里进程A,B,C间的协作涉及到了进程通信问题,而且有共同都需要拥有的东西——-文本内容,不停的切换造成性能上的损失。若有一种机制,可以使任务A,B,C共享资源,这样上下文切换所需要保存和恢复的内容就少了,同时又可以减少通信所带来的性能损耗,那就好了。是的,这种机制就是线程。
线程也叫轻量级进程,它是一个基本的CPU执行单元,也是程序执行过程中的最小单元,由线程ID、程序计数器、寄存器集合和堆栈共同组成。线程的引入减小了程序并发执行时的开销,提高了操作系统的并发性能。线程没有自己的系统资源。
进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。或者说进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
线程则是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。
进程和线程的关系:
(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
(2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。
(3)CPU分给线程,即真正在CPU上运行的是线程。
三、查看网络状态

netstat 查看网络状态
netstat -lnp 查看监听端口
技术分享图片
netstat -an 查看系统的网络连接状况
技术分享图片
netstat -lntp 只看出tcp的,不包含socket
技术分享图片
ss -an 和nestat异曲同工 但是ss不显示进程名字
分享一个小技巧:

 netstat -an | awk ‘/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}‘

查看各种状态的有多少个
ESTABLISHED 需要特别关注,如果特别大,就说明系统繁忙
技术分享图片
tcp与udp区别与介绍
http://blog.csdn.net/li_ning_/article/details/52117463
tcp的三次握手与四次分手
https://www.cnblogs.com/leezhxing/p/4524176.html

四、抓包

yum install -y tcpdump
抓包工具tcpdump
 用法:tcpdump -nn
 tcpdump -nn -i ens33 
 tcpdump -nn port 80     //指定端口80
 tcpdump -nn not port 22 and host 192.168.0.100  //指定host和端口不是22
tcpdump -nn -i ens33 -c 10 -w /tmp/1.cap   //  抓10个包放入1.cap中,可以用file命令查看信息
tcpdump -r   /tmp/1.cap  //读取抓到的包信息
 tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri" 
 yum install -y wireshark

tcpdump -nn -i ens33
第一个n是ip,第二个n是端口号
不写n就显示主机名和ssh
技术分享图片

技术分享图片

以上是关于Linux学习笔记(三十)日常运维二的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习笔记(二十九)日常运维一

Linux学习笔记(三十三)iptables备份firewalld

linux日常笔记1

Linux学习笔记(三十二)iptables filter表案例 iptables nat表应用

[Linux|DBA]运维三十六计

[Linux]运维三十六计--腾讯两位大神的总结