linux学习第二十八篇:监控io性能,free命令,ps命令,查看网络状态,linux下抓包

监控磁盘io性能 (命令:iostat,iotop)

查看磁盘读写状态: iostat -x %util:表示io等待,也就是磁盘使用占用cpu百分比。如果百分比很大,如50%,60%说明磁盘io很差,因为磁盘很忙,那么读写状态行rkb/s,wkb/s数值也会很大。

查看哪些进程在读写磁盘io,可以查看哪些进程导致磁盘io很忙(安装包:yum install -y iotop): iotop 使用磁盘io越多的排在越前。

free命令

查看当前系统的总内存大小以及使用内存的情况

查看内存和交换分区的使用情况: free //以kb为单位显示 free -m //以M为单位 free -h //以合适的单位为单位,包括有M,G(常用) Mem是内存的使用情况,分别是内存的总大小(total),使用了多少(used),剩余多少(free),共享的多少(shared),缓存的多少(buffer/cache),马上可以使用的内存大小(available) Swap是交换分区的使用情况

公式:total=used+free+buff/cache avaliable包含free和buffer/cache剩余部分

PS:0000(磁盘) —>内存(cache) –>cpu //cpu到磁盘里读数据速度很慢,但是把磁盘的数据放到内存里,cpu到内存读取的速度就很快。 cpu(0000) —>内存(buffer)–>磁盘 //cpu运行的速度很快,但是磁盘很慢,要把数据写进磁盘就会很慢,cpu等不了,所以cpu分析处理好的数据先放到内存再放到内存。

查看进程:ps命令

ps命令是查看系统进程,静态的一次性的把当前进程的使用状况列出来。

常用的命令用法: ps aux

%MEM:内存百分比。 VSZ:虚拟内存。 RSS:物理内存。 TTY:控制中断。 START:什么时候开始的。 TIME:运行了多久。 COMMAND:命令。 STAT部分说明: D 不能中断的进程 R run状态的进程 S sleep状态的进程 T 暂停的进程 Z 僵尸进程 < 高优先级进程 N 低优先级进程 L 内存中被锁了内存分页 s 主进程 l 多线程进程 + 前台进程 + ps -elf

查看进程在哪里启动: ls -l /proc/进程PID //进程的PID都有对应的目录

PS:线程和进程的关系:线程是属于进程的,线程运行在进程空间内,同一进程所产生的的线程共享同一用户内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。所以,线程不能独立地执行,它必须依附在一个运行的应用程序上(即进程上),而一个进程至少需要一个线程作为它的指令执行,进程管理着资源(比如CPU、内存、文件等等)。而将线程分配到某个CPU上执行 线程和进程的区别:当操作系统分配给进程资源后,同属一个进程的多个线程之间可以相互共享进程中的内存资源,原因是线程没有自己独立的内存资源,它只有自己执行的堆栈和局部变量。而多个进程之间每个进程都拥有自己的一整套变量,即每个进程都有自己独立的内存单元。这就使得多线程之间的通信比多进程之间的通信更加的容易和高效。

查看网络状态

命令:netstat //查看tcp/ip的通信状态

ss -an 与netstat差不多,但是不会显示进程名字。

命令中各选项的含义如下: -a 显示所有socket,包括正在监听的。

-c 每隔1秒就重新显示一遍,直到用户中断它。

-i 显示所有网络接口的信息,格式同“ifconfig -e”。

-n 以网络IP地址代替名称,显示出网络连接情形。

-r 显示核心路由表,格式同“route -e”。

-t 显示TCP协议的连接情况。

-u 显示UDP协议的连接情况。

-v 显示正在进行的工作。

查看监听端口,打印当前系统启动哪些端口: netstat -lnp

netstat -ltnp //只查看tcp,没有udp和unix

netstat -ltunp //只查看tcp,udp。没有unix

查看系统的所有网络连接状况: netstat -an

netstat -an参数中stat(状态)的含义如下:

参数

含义

LISTEN

侦听来自远方的TCP端口的连接请求

SYN-SENT

在发送连接请求后等待匹配的连接请求

SYN-RECEIVED

在收到和发送一个连接请求后等待对方对连接请求的确认

ESTABLISHED

代表一个打开的连接,我们常用此作为并发连接数)

FIN_WAIT-1

等待远程TCP连接中断请求,或先前的连接中断请求的确认

FIN_WAIT-2

从远程TCP等待连接中断请求

CLOSE-WAIT

等待从本地用户发来的连接中断请求

CLOSING

等待远程TCP对连接中断的确认

TIME_WAIT

等待足够的时间以确保远程TCP连接收到中断请求的确认

LAST_ACK

等待原来发向远程TCP的连接中断的确认

CLOSED

没有任何连接状态

- 在日常工作中,我们可以用shell组合命令来查看服务器的TCP连接状态并汇总,命令如下: netstat -an|awk ‘/^tcp/{++S[$NF]}END{for (a in S)print a,S[a]}’ netstat -an | awk ‘/^tcp/ {++sta[$NF]} END {for(key in sta) print key,”\t”,sta[key]}’

参数说明:

参数

说明

CLOSED

没有连接活动或正在进行的

LISTEN

服务器正在等待的进入呼叫

SYN_RECV

一个连接请求已经到达,等待确认

SYN_SENT

应用已经开始,打开一个连接

ESTABLISHED

正常数据传输状态,也可以近似的理解为当前服务器的并发数;(如果数值很大说明系统很忙,1000以内都是可以接受的)

FIN_WAIT1

应用已经完成

FIN_WAIT2

另一边同意释放

ITMED_WAIT

等待所有分组死掉

CLOSING

两边同时尝试关闭

TIME_WAIT

另一边已初始化一个释放

LAST_ACK

等待所有分组死掉

- 统计 TCP连接数 命令: netstat -an |grep ‘ESTABLISHED’ |grep ‘tcp’ |wc -l

linux下抓包

抓包工具tcpdump 安装包:yum install -y tcpdump

用法:tcpdump -nn

  1. 查看特定网卡需要参数i: tcpdump -nn -i ens33
  1. 查看特定端口的包: tcpdump -nn -i ens33 port 22
  2. 不查看某个端口的包: tcpdump -nn -i ens33 not port 22 //查看其他端口除了22端口
  3. 只查看某个ip的包: tcpdump -nn -i ens33 not port 22 and host 113.105.125.150 //只查看IP 113.105.125.150的其他端口除了22端口的包
  4. 设定抓多少个包(-w写入的文件是数据包): tcpdump -nn -c 100 -w 1.cap //只抓100个包并放到文件1.cap中。1.cap文件中的内容是不能直接cat查看的,因为这个文件是从网卡里捕获的数据包信息,是真真正正的通信的数据。
  5. 查看抓包数据的文件内容(-r显示的信息是数据流): tcpdump -r 1.cap

命令:tshark //与tcpdump类似的抓包工具

安装包命令:yum install -y wireshark

查看什么IP访问我们的网站的什么链接: 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”

扩展: 1. 扩展tcp三次握手四次挥手 http://www.doc88.com/p-9913773324388.html 2. 使用tshark抓包:

  1. 以下的用法可以显示访问http请求的域名以及uri 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”
  2. 以下可以抓取mysql的查询 tshark -n -i eth1 -R ‘mysql.query’ -T fields -e “ip.src” -e “mysql.query” 另外一种方法: tshark -i eth1 port 3307 -d tcp.port==3307,mysql -z “proto,colinfo,mysql.query,mysql.query”
  3. 以下可以抓取指定类型的MySQL查询 tshark -n -i eth1 -R ‘mysql matches “SELECT|INSERT|DELETE|UPDATE”’ -T fields -e “ip.src” -e “mysql.query”
  4. 统计http的状态 tshark -n -q -z http,stat, -z http,tree 这个命令,直到你ctrl + c 才会显示出结果
  5. tshark 增加时间标签 tshark -t ad tshark -t a

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏狮乐园

liferay和proxy server那点事

这里的proxy server应当是指正向代理(forward proxy)。正向代理大概的意思,就是一个位于客户端和原始服务器之间的服务器,当客户端为了从原始...

24410
来自专栏顶级程序员

记一次惊心的网站TCP队列问题排查经历

此时问题已经影响到整个网站的正常业务,我的那个心惊的呀,最主要报警系统没有任何报警,服务运行一切正常,瞬时背上的汗已经出来了。但还是要静心,来仔细寻找蛛丝马迹,...

12620
来自专栏linux系统运维

原 添加自定义监控项目,配置邮件告警,测

21530
来自专栏前端萌媛的成长之路

一波webpack

20640
来自专栏Brian

Linux 系统优化

概述 在Linux 学习笔记一大体介绍了一些简单的Linux知识和一些简单的优化。下面我们来学习一下Linux和Linux一些安全知识(Linux是基于内核为...

49960
来自专栏SDNLAB

脱坑神器,让你一步了解ODL控制器集群

一、控制器集群基本知识 1.1 Consensus一致性 Consensus一致性是指多个服务器在状态达成一致,但是在一个分布式系统中,因为各种意外可能,有的...

49170
来自专栏耕耘实录

关于FTP主动模式与被动模式的一点理解

版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

15220
来自专栏龙首琴剑庐

基于复杂方案OWSAP CsrfGuard的CSRF安全解决方案(适配nginx + DWR)

1、什么是CSRF? 已经有很多博文讲解其过程和攻击手段,在此就不重复了。 O(∩_∩)O 不清楚的同学,请自行搜索或按链接去了解: http://blog...

54170
来自专栏北京马哥教育

十二条Linux运维面试必备经典笔试/面试题,来挑战一下!

又到了一年一度的秋招,作为运维方向,看了一些面经,收集了一些笔试面试题,总结了一下,贴出来仅供参考,有错误的地方还请指出. 1.Linux设置环境变量 暂时的:...

53690
来自专栏分布式系统进阶

Kafka初始化流程与请求处理

29720

扫码关注云+社区

领取腾讯云代金券