监控io性能、free命令、ps命令、查看网络状态、Linux下抓包

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

一、监控io性能

iostat命令

iostat命令被用于监视系统输入输出设备和cpu的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出cpu使用情况。通vmstat一样,iostat也有一个弱点,就是它不能对耨个进程进行深入分析,仅对系统的整体情况进行分析。

iostat -x (查看磁盘状态)

iostat和sar是同一个包,安装sysstat即可。

[root@localhost ~]# iostat -x 1
Linux 3.10.0-514.el7.x86_64 (localhost.localdomain)     20171128日     _x86_64_    (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
       0.58    0.00    0.79    0.58    0.00   98.04
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.27    5.04    1.88   187.33    72.45    75.09     0.08   11.58   10.20   15.27   2.37   1.64
sdb               0.00     0.00    0.28    0.00     1.76     0.00    12.55     0.00    0.55    0.55    0.00   0.50   0.01
dm-0              0.00     0.00    0.06    0.00     0.43     0.00    15.20     0.00    0.35    0.35    0.00   0.35   0.00

说明: util%表示io等待占比,正常情况下该值和磁盘读写(r/w)成正比,如果该值很大,读写数值很小则说明磁盘存在问题,系统性能会受影响!

iotop命令 (查看磁盘状态)

iotop命令是一个用来见识磁盘i/o使用状况的top类工具(动态显示)。iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息。

安装iotop命令:yum install -y iotop

[root@localhost ~]# iotop
Total DISK READ :   0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:   0.00 B/s | Actual DISK WRITE:       0.00 B/s
TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                      
 1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % systemd --switched-root~-system --deserialize 21
 2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
 3 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
517 be/4 dbus        0.00 B/s    0.00 B/s  0.00 %  0.00 % dbus-daemon --system --~ile --systemd-activation
 ......

注意:主要关注的是io%那一列!

iotop常用快捷键

  • 左右方向键:改变排序方式,默认按IO排序
  • r:改变排序顺序
  • o:只显示用IO输出的进程
  • p:进程/线程的显示方式的切换
  • a:显示累积使用量
  • q:退出

free命令

free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区

直接运行free

[root@localhost ~]# free
             total        used        free      shared  buff/cache   available
Mem:         999936      121428      562816        6812      315692      694048
Swap:       2097148           0     2097148

free -h:以适合的单位显示大小。
free -t:显示内存各列信息的总和。
-b,k,m,g:以byte、KB、M、G为单位显示。默认单位为KB。

说明

  • total=used+free+buff/cache
  • available=free+buff/cache(剩余部分)
  • 所谓的查看内存剩余是看available。
  • cache(缓存):磁盘(数据)→内存(cache)→cpu
  • buff(缓存):cpu→内存(buff)→磁盘

ps命令

ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。

a:显示现行终端机下的所有程序,包括其他用户的程序。
u:以用户为主的格式来显示系统状况。
x:显示所有程序,包括历史进程。
e:显示所有进程(同a)
f:显示UID、PPIP、C与STIME栏
l:显示进程详细信息

ps aux

[root@centos-01 ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.1  0.3 128092  6696 ?        Ss   19:55   0:00 /usr/lib/systemd/systemd --switched-root --system --d
root          2  0.0  0.0      0     0 ?        S    19:55   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    19:55   0:00 [ksoftirqd/0]
root          6  0.0  0.0      0     0 ?        S    19:55   0:00 [kworker/u256:0]
......
  • PID :进程id (kill+PID 杀死进程)ls -l /proc/PID/为进程的目录
  • VSZ :虚拟内存
  • RSS :物理内存
  • STAT :进程状态

STAT 进程状态

  • D:不能中断的进程。(进程中断后会对程序或结果有影响,所以布不能中断。)这个状态会影响系统负载,会使系统负载偏高,因为cpu使用率不高,所以硬件五太大压力。
  • R:run状态进程。某一个时间段内在使用cpu。
  • S:sleep状态进程
  • s:主进程
  • T:暂停的进程
  • Z:僵尸进程
  • <:高优先级进程
  • N:低优先级进程
  • L:内存中被锁定了内存分页
  • l:多线程进程
  • +:前台进程

ps elf

[root@centos-01 ~]# ps elf
F   UID    PID   PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
4     0   2095   2092  20   0 115516  2144 wait   Ss   pts/0      0:00 -bash USER=root LOGNAME=root HOME=/root PATH=/us
0     0   2202   2095  20   0 148928  1452 -      R+   pts/0      0:00  \_ ps elf XDG_SESSION_ID=1 HOSTNAME=centos-01 S
4     0    550      1  20   0 110036   840 n_tty_ Ss+  tty1       0:00 /sbin/agetty --noclear tty1 linux LANG= PATH=/us
......

进程和线程

进程

进程是程序执行时的意识实例,即它是程序已经执行到课中程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。
进程——资源分配的最小单位

线程

线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥有的全部资源。
线程——程序执行的最小单位

进程有独立的地址空间,线程没有单独的地址空间(同一进程内的线程共享进程的地址空间)。

查看网络状态

netstat 命令

netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。)

  • a:all,显示所有连线中的socket
  • l:listening,显示监控中的服务器的socket
  • n:numeric,直接使用IP地址,而不通过域名服务器。
  • p:programs,显示正在使用socket的程序识别码和程序名称
  • t:tcp,显示tcp传输协议的连接状况

netstat -lnp 查看监听端口

[root@centos-01 ~]# netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1382/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1896/master         
tcp6       0      0 :::22                   :::*                    LISTEN      1382/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1896/master         
udp        0      0 127.0.0.1:323           0.0.0.0:*                           525/chronyd         
udp6       0      0 ::1:323                 :::*                                525/chronyd         
raw6       0      0 :::58                   :::*                    7           566/NetworkManager  
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
unix  2      [ ACC ]     STREAM     LISTENING     19595    1896/master          public/pickup
unix  2      [ ACC ]     STREAM     LISTENING     19599    1896/master          public/cleanup
unix  2      [ ACC ]     STREAM     LISTENING     19602    1896/master          public/qmgr
......

netstat -an 查看系统网络连接(tcp/ip)状态

[root@centos-01 ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0     52 192.168.159.128:22      192.168.159.1:49853     ESTABLISHED
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 ::1:25                  :::*                    LISTEN     
udp        0      0 127.0.0.1:323           0.0.0.0:*                          
udp        0      0 192.168.159.128:54597   51.15.41.135:123        ESTABLISHED
udp6       0      0 ::1:323                 :::*                               
raw6       0      0 :::58                   :::*                    7          
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     19595    public/pickup
unix  2      [ ACC ]     STREAM     LISTENING     19599    public/cleanup
unix  2      [ ACC ]     STREAM     LISTENING     19602    public/qmgr
......

netstat -lntp 只查看tcp协议连接,不看socket

[root@centos-01 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1382/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1896/master         
tcp6       0      0 :::22                   :::*                    LISTEN      1382/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1896/master   

查看tcp协议状态的命令

[root@centos-01 ~]# netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'
LISTEN   4
ESTABLISHED      1

ss命令

ss命令用来显示处于活动状态的套接字信息。ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效,缺点是不会显示进程的名称。

  • a:显示所有套接字(socket)
  • n:不解析服务器名称,以数字方式显示

    [root@centos-01 ~]# ss -an
    Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port 
    nl UNCONN 0 0 0:0 
    nl UNCONN 0 0 0:-1111489994 

    nl UNCONN 0 0 0:-1111489994 *

linux下抓包

tcpdump 抓包工具

Linux tcpdump命令用于倾倒网络传输数据。
执行tcpdump指令可列出经过指定网络界面的数据包文件头,在Linux操作系统中,你必须是系统管理员。

  • i:指定网卡名,使用指定的网络送出数据包
  • c:指定数量
  • w:指定存放位置
  • r:read,从指定文件查看数据包数据
  • n:不把主机的网络地址转换成名字

用法

  • tcpdump -nn -i ens33 (第一个n表示以数字形式显示IP,如果不加该选项会显示成主机名。)
  • tcpdump -nn ens33 port22 (not port22)指定端口为22的(非22的)
  • tcpdump -nn ens33 port 22 and host 192.168.159.128 指定多个条件(host后跟主机名或IP)
  • tcpdump -nn -i ens33 -c 10 -w/tmp/1.cap指定抓包数量和存放位置

    [root@centos-01 ~]# tcpdump -nn -i ens33 -c 10 -w /tmp/1.cap
    tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
    10 packets captured
    11 packets received by filter
    0 packets dropped by kernel

注意

  • cap的内容无法用cat命令查看,可以使用tcpdump -r命令查看

    [root@centos-01 ~]# tcpdump -r /tmp/1.cap 
    reading from file /tmp/1.cap, link-type EN10MB (Ethernet)
    22:06:14.751532 IP centos-01.ssh > 192.168.159.1.49853: Flags [P.], seq 2771172726:2771172874, ack 2769153140, win 318, length 148
    22:06:14.792115 IP 192.168.159.1.49853 > centos-01.ssh: Flags [.], ack 148, win 2053, length 0
    22:06:14.959435 ARP, Request who-has gateway tell 192.168.159.1, length 46
    22:06:15.959718 ARP, Request who-has gateway tell 192.168.159.1, length 46
    ......

tshark 命令

该命令也是用于抓包的。

使用前需要安装该工具wireshark。

  • 查看指定网卡80端口的1个web服务的访问情况(类似于web的访问日志):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" ]

  • 抓取mysql的查询

    方法一: 
    [root@centos-01 ~]# tshark -n -i ens33 -R 'mysql.query' -T fields -e "ip.src" -e "mysql.query"
    tshark: -R without -2 is deprecated. For single-pass filtering use -Y.
    Running as user "root" and group "root". This could be dangerous.
    Capturing on 'ens33'
    0 packets captured

    方法二:
    [root@centos-01 ~]# tshark -i ens33 port 3307 -d tcp.port==3307,mysql -z "proto,colinfo,mysql.query,mysql.query"
    Running as user "root" and group "root". This could be dangerous.
    Capturing on 'ens33'
    packets captured

因为无相关进程,所以没有抓取到任何包。

*抓取指定类型的MySQL查询

[root@centos-01 ~]# tshark -n -i ens33 -R 'mysql matches "SELECT|INSERT|DELETE|UPDATE"' -T fields -e "ip.src" -e "mysql.query"
tshark: -R without -2 is deprecated. For single-pass filtering use -Y.
Running as user "root" and group "root". This could be dangerous.
Capturing on 'ens33'
8 packet dropped
0 packets captured
  • 统计http的状态

    [root@centos-01 ~]# tshark -n -q -z http,stat, -z http,tree
    Running as user "root" and group "root". This could be dangerous.
    Capturing on 'nflog'

注意::该命令需要按ctrl+c才会显示结果!

  • tshark 增加时间标签

tshark -t ad 
tshark -t a

本文转自 豆渣锅 51CTO博客,原文链接:http://blog.51cto.com/754599082/2045468



相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6天前
|
Ubuntu Linux 开发者
Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统
使用上述U-Boot命令配置并启动嵌入式设备。如果配置正确,设备将通过TFTP加载内核和设备树,并通过NFS挂载根文件系统。
39 15
|
8天前
|
数据采集 网络协议 JavaScript
网络爬虫性能提升:requests.Session的会话持久化策略
网络爬虫性能提升:requests.Session的会话持久化策略
|
11天前
|
Ubuntu Unix Linux
Linux网络文件系统NFS:配置与管理指南
NFS 是 Linux 系统中常用的网络文件系统协议,通过配置和管理 NFS,可以实现跨网络的文件共享。本文详细介绍了 NFS 的安装、配置、管理和常见问题的解决方法,希望对您的工作有所帮助。通过正确配置和优化 NFS,可以显著提高文件共享的效率和安全性。
84 7
|
1月前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
112 7
|
2月前
|
域名解析 网络协议 安全
|
3月前
|
运维 监控 网络协议
|
3月前
|
网络协议 前端开发 Java
网络协议与IO模型
网络协议与IO模型
171 4
网络协议与IO模型
|
3月前
|
机器学习/深度学习
YOLOv10优改系列一:YOLOv10融合C2f_Ghost网络,让YoloV10实现性能的均衡
本文介绍了YOLOv10的性能优化,通过融合Ghost模块和C2f结构,实现了网络性能的均衡。GhostNet通过GhostModule和GhostBottleNeck减少参数量,适用于资源有限的场景。YOLOv10-C2f_Ghost在减少参数和计算量的同时,保持了与原始网络相当或更好的性能。文章还提供了详细的代码修改步骤和可能遇到的问题解决方案。
353 1
YOLOv10优改系列一:YOLOv10融合C2f_Ghost网络,让YoloV10实现性能的均衡
|
2月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
877 2
|
2月前
|
存储 Ubuntu Linux
2024全网最全面及最新且最为详细的网络安全技巧 (三) 之 linux提权各类技巧 上集
在本节实验中,我们学习了 Linux 系统登录认证的过程,文件的意义,并通过做实验的方式对 Linux 系统 passwd 文件提权方法有了深入的理解。祝你在接下来的技巧课程中学习愉快,学有所获~和文件是 Linux 系统登录认证的关键文件,如果系统运维人员对shadow或shadow文件的内容或权限配置有误,则可以被利用来进行系统提权。上一章中,我们已经学习了文件的提权方法, 在本章节中,我们将学习如何利用来完成系统提权。在本节实验中,我们学习了。

热门文章

最新文章