监控io性能

  • iostat iotop 在运维工作中是除了 cpu 内存外 也是一个重要的指标,是查看磁盘的问题。
  • 有时候cpu 内存都有剩余,负载却很高,用vmstat 查看,发现 b 或者wa 比较大。说明磁盘有瓶颈。
  • iostat 和sar是同一个包。用法是 直接回车 也可以加 数字 。
  • 显示出来的东西就i是你的硬盘 的读写速度。这个看不出来什么 和sar -q 是差不多的。
  • 主要的是 iostat -x 里面的%util 这个百分比表示io等待,磁盘使用有多少时间占用cpu。cpu有一部分时间是给进程计算的,有一段时间是等待io 也就是磁盘写入写出的。
  • 如果磁盘的百分比很大,那后面的读和写的也会数字很大,表示你的磁盘很忙。、如果读写行不大, util很大,说明硬盘有问题。
  • 还有iotop 发现磁盘io很慢 很频繁,想知道是那个进程在不断读写,就有iotop 。 和top很像 也是动态显示。

free命令

  • free是直接查看内存使用情况的命令。
  • OS7和OS6 结果是不一样的,7的更直观简洁。
  • 这里显示的是 内存使用情况和交换分区使用情况。
  • 也可以用 free -m 和free -h
  • total 就是表示一共有多少内存, used表示使用了多少内存, free表示剩余多少内存,这里显示的 使用和剩余 之外 还有个 buffers/cache 这个表示缓冲和缓存,是在磁盘也就是数据在传输到cpu中有一个内存就i是 buffers/cache再起作用。 当磁盘往cpu里输入任务需要计算时,磁盘的速度是很慢的,所以就把数据放在cache里,让cpu能快速拿取。 反之 cpu处理的数据,往磁盘写入时,会 把数据放在buffers里 方便磁盘拿取。
  • tolal=used+buffers/cache+free
  • avaliable 包含free和buffers/cache剩余的部分。
  • 主要关注的就是avaliable 。

ps命令

  • 查看进程的命令就是ps。
  • 常用的有两种 ps aux 可以把所有的进程都列出来。
  • 比如查看某i一个进程是否在运行 可以加grep过滤一下。
  • 还有就是ps -elf 和aux几乎一样, 看个人习惯。
  • 第一行 的user 就是进程的名字。 PID 进程的ID号, ID号的运用在于关闭某个进程 。
  • ID号还i有个用途几乎用不到,,就是当系统被黑的时候,假如遇见一个从来没见过的进程。可以复制ID号 然后去查看它在那个位置。在哪里启动的。
  • 后面的内容就是cpu百分比,内存百分比。虚拟内存。物理内存,在那个pty上,START什么时候启动。TIME运行多久了。
  • 需要关注的是STRT,有几种运行的状态,D不能中断的进程,R run状态的进程,S sleep状态的进程。 T暂停的进程,Z僵尸进程,
  • < 高优先级进程, N低优先级进程。 L内存中被锁了内存分页。s主进程,l多线程进程,+前台进程。
  • D状态很少见,不能中断,中断了会对进程有影响。 这个状态会影响系统的负载。
  • R就是正在跑的进程,不是现在这个时刻就使用着cpu,是说某个时间段内,在使用cpu 。
  • 对应的S 进程运算完就负载均衡,先暂停一下,鬼一会再集活。
  • T是暂停的进程,比如某个进程在进行,你把他暂停了,就会显示T。
  • +前台进程,是指在终端上的进程, 不是在后台。
  • Z僵尸进程。
  • < 高优先级就是权限高,优先CPU为它处理。
  • N低优先级,和<相反。
  • s 主进程。主进程下面会有很多子进程。
  • l 线程由一个大进程组成的。(涉及的很多,要去网上查查。)

查看网络进程

  • 查看网络状态 netstat 。linux作为服务器的操作系统,会有很多服务。往往和客户端相互通信的。
  • 这就意味着要有监听端口,对外的通信端口。nesttat 就是查看通信状态。
  • 正常状态下,一台机器没有监听。要想提供服务,想让别人访问你的服务器,网站,就需要监听一个端口。
  • 查看网卡的命令是。netstat -lnp 加l就是监听的意思,看看机器上都监听哪些端口服务。tcp udp 要去网上查下资料。
  • 还有unix 也是进程通信的,前提是一台机器。 sockt 也是进程间通讯,
  • 我们主要关注的是上面的 端口。
  • 还有 nestat -an 这个会查看tcp ip所有的状态。
  • lnp 也可以加t 只查看tcp 加上u 就是查看tcp udp
  • 关于这里的内容,会涉及到一个扩展,tcpip的三次握手 ,四次挥手。
  • 查看的内容,大部分是显示TIME_WAIT 表示客户端和服务端,通信完后,链接还没断开,处于等待状态,等待下一次连接。
  • netstat -an 有一个关于awk的命令, 是查看所有状态的数字的。
  • netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta)} print key,"\t",sta[key]}'
  • 关注ESTABLISHED 这个数值如果很大,证明你的系统很忙。通常情况下都没事,如果几千个都很忙了。
  • 后续有个概念,网站并发连接数,有多少个用户在连接你,可以用这个数字去说明并发连接数。
  • 还有个命令 ss -an 和netstat差不多的。
  • 想查看某个关键词 用grep 过滤。 大小写记得加 -i

linux下抓包

  • 有时候会遇见攻击,网卡流量会异常,想知道有哪些数据包进来,可以用 tcpdump 需要安装一下。
  • 最简单的用法 tcpdump -nn
  • 因为设备的名字笔记特殊 要加上网卡名。
  • 第一列是时间,第二列是ip 源ip 端口到哪里去。 后面是数据包的信息。主要关注的是 源ip到哪里去。
  • 会出现很多的东西, -nn 第一个n表示ip用数字显示出来。 不加会显示主机名。
  • tcpdump 看的就是数据的流向, 还有就是看的length 长度,有时候会看到奇怪的数据包, 很多都是tcp udp的就是攻击了。(有一种攻击就是 DDos udp flood 遇到这种工具,只能接入专业的防攻击设备 服务。)
  • 还有 就是 指定端口 比如 tcpdump -nn -i eth0 port duan端口号。
  • 也可以排除法 除了指定端口号 都列出来。 加not (这里因为服务器没有什么东西所以没有截图、)
  • 也可以添加多个条件、tcpdump -nn -i eth0 port 22 and host +ip
  • 也可以指定行数, 并且存到一个文件里去。 可以用 -c -w选项。
  • tcpdump -nn -i eno16777736 -c 100 -w /tmp/1.cap
  • 这个会停止 是因为在这个端口下,不去产生数据流的话,不会产生那么多的数据包。 我们在查看的时候 就是在通讯,一通讯就i会有数据包,可以i在另一个终端 运行一些东西, 然后就可以抓到了。
  • 最终写入的文件 可以查看到一个大概的信息,这个文件不能直接cat 这个文件是从网卡里捕获的数据包信息。是通信数据。
  • 这个查看 还是用 tcpdump -r /tmp/1.cap
  • 还有个命令 是tshark 这个要安装一个工具, 这个命令和tcpdump很相似,也是抓包的。
  • 主要是一个 使用的方法,是 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"