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

简介:

监控磁盘状态io
因为磁盘的io也是非常重要的指标。有时cpu,内存有剩余就是负载很高。Vmstat发现b或者wa列数据比较大。说明磁盘有瓶颈。
iostat命令在安装sysstat包时已经安装上了,和sar同包
iostat -x 磁盘使用
[root@localhost ~]# iostat -x
Linux 3.10.0-123.el7.x86_64 (localhost.localdomain) 2017年11月24日 _x8664 (1 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
0.10 0.00 0.40 0.22 0.00 99.29

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.23 0.01 1.95 1.73 34.32 2.24 19.91 0.02 4.29 4.71 3.82 2.35 0.86
scd0 0.00 0.00 0.00 0.00 0.02 0.00 8.00 0.00 17.45 17.45 0.00 17.45 0.01
%util:表示IO等待时间比。如果占用50%,rKB、wKB不大,%util大磁盘可能存在故障

磁盘很忙是哪个进程在读写呢?
iotop 磁盘使用
yum install -y iotop

10.7 free命令
free 查看内存使用情况
free -m / -g / -h查看内存总大小和使用情况

内存 内存总大小 已用大小 未使用大小 共享大小 缓冲缓存
交换分区 总大小 已用大小 未使用大小


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

buffers:缓冲 
cached:缓存

Swap用完要加swap不是解决的办法,应该加内存。
内存不够(内存泄漏)要检查程序。
10.8 ps(pstree)
是一种静态的。把当前的状态显示出来
ps 查看系统进程
用法:
ps aux、ps -elf //列出系统全部进程
STAT 部分说明
D 不能中断的进程(对程序有影响的。影响系统负载)
R run 状态的进程
S sleep 状态的进程
T 暂停的进程(运行的进程被ctrl+z)
Z 僵尸进程
< 高优先级进程
N 低优先级进程
L 内存中被锁了内存分页
s 主进程(父进程守护进程)
l 多线程进程

  • 前台进程

[root@lsx-02 ~]# ps -aux|grep nginx //查看进程是否在运行

[root@lsx-02 ~]# ps -aux|grep qmgr
postfix 1872 0.0 0.0 91908 52 ? S 9月15 0:00 qmgr -l -t unix -u
root 12359 0.0 0.1 112672 984 pts/0 R+ 00:24 0:00 grep --color=auto qmgr
[root@lsx-02 ~]# kill 1872 ////杀死进程(不合理进程网站搜索下。合理的不能杀死,可以考虑加内存或者建立集群)
[root@lsx-02 ~]# ps -aux|grep qmgr
root 12361 0.0 0.1 112672 984 pts/0 R+ 00:24 0:00 grep --color=auto qmgr

背景:当系统被黑了,看到不知道的进程,想看看进程在哪呢?把进程杀掉,找到pid
[root@lsx-02 ~]# ls -l /proc/1111/ 1111是进程号 可以查看一个进程从哪里启动起来的

[root@lsx-02 ~]# ps –aux
使用者 进程号 Cpu百分比 内存百分比 虚拟内存 物理内存 Tty终端 状态 什么时候启动的 运行多久 进程名字

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.7 50036 4364 ? Ss 9月15 0:06 /usr/lib/
root 2 0.0 0.0 0 0 ? S 9月15 0:00 [kthreadd
root 3 0.0 0.0 0 0 ? S 9月15 0:04 [ksoftirq

父进程是root启动的 有一个小s主进程(守护进程)
子进程是www启动的

进程有多个线程,线程使用进程相同的内存区域

ps -le
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 80 0 - 12695 ep_pol ? 00:00:03 systemd
1 S 0 2 0 0 80 0 - 0 kthrea ? 
10.9 netstat 查看网络状态
Linux作为服务器的操作系统,会有很多的服务,服务通常和客户端相互通信的。意味着它有对外的监听端口。安装一个服务就要监听一个端口,要想其他人访问就要打开一个端口,远程设备与这个端口相连,相互通信。
netstat 查看tcp/ip网络状态
[root@lsx-02 ~]# yum install -y net-tools

netstat -lnp 查看监听端口
[root@lsx-02 ~]# netstat –lnp -l 监听
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name 
tcp 0 0 127.0.0.1:25 0.0.0.0: LISTEN 1788/master 
tcp 0 0 0.0.0.0:22 0.0.0.0:
 LISTEN 1111/sshd 
tcp6 0 0 ::1:25 ::: LISTEN 1788/master 
tcp6 0 0 :::22 :::
 LISTEN 1111/sshd 
udp 0 0 0.0.0.0:46708 0.0.0.0: 504/avahi-daemon: r 
udp 0 0 0.0.0.0:5353 0.0.0.0:
 504/avahi-daemon: r 
raw6 0 0 :::58 :::* 7 619/NetworkManager
Linux的socket文件也是进程之间通信的(在同一台服务器,两进程之间相互通信)
unix 3 [ ] STREAM CONNECTED 18212 
unix 2 [ ] DGRAM 15809 
unix 3 [ ] STREAM CONNECTED 14480 
unix 3 [ ] STREAM CONNECTED 17050

netstat -lntp 只看出tcp的,不包含socket
netstat -an 查看系统的网络连接状况
[root@lsx-02 ~]# netstat –an 查看所有的连接状态
连接状态有LISTENING、ESTABLISHED、TIME_WAIT、FIN_WAIT2、CLOSING
TIME_WAIT就是客户端与服务器端相互通信,通信完成之后连接还没断开处于一种等待的状态,等待下次两机器在一次连接传输数据。

tcp/ip三次握手

ss -an 和nestat异曲同工
ss -an|grep listen -i
分享一个小技巧:
netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}' //各种连接状态次数
ESTABLISHED表示建立连接正在传输数据的。数越大系统越忙 (在通信)1000以内可以接受(网站并发连接数(同一时间有多少客户端连接)ESTABLISHED的数就可以说明并发连接数有多少)

抓包工具
抓包工具tcpdump
在讲解sar那节,可能遇到攻击网卡流量异常,记录的包可能超过一万,可能想知道有哪些包进来

yum install -y tcpdump
用法:tcpdump -nn

-i 指定监听的网络接口。
-nn 不进行端口名称的转换。
tcpdump -nn -i ens33 // -nn 如果不加会显示主机名(加显示ip端口号)
看的是流向,和length。length默认很多都是tcp,可能看到udp的包,udp的包很有可能你被攻击了(DDos udp flood)。1G的DDos可能一个小机房都受不了,只能借助专业的防攻击设备、服务(创宇300G应该没问题)

tcpdump -nn port 80 //指定端口
tcpdump -nn not port 22 and host 192.168.0.100 //不要22端口和只要host指定ip的包

-c 在收到指定的数量的分组后,tcpdump就会停止。
写脚本抓数据包
tcpdump -nn -c 100 -w 1.cap // -w指定要存的文件数据包(这步后台运行或者在开一个终端运行)。是从网卡抓出来的文件,通信的内容
tcpdump -r /tmp/01tcp.txt //看文件的内容 -r 读

yum install -y wireshark //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" //指定80端口web的访问情况,类似web访问日志



本文转自 虾米的春天 51CTO博客,原文链接:http://blog.51cto.com/lsxme/2045505,如需转载请自行联系原作者

相关文章
|
2月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
91 2
|
21天前
|
NoSQL 关系型数据库 MySQL
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
136 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
|
12天前
|
前端开发 网络协议 安全
【网络原理】——HTTP协议、fiddler抓包
HTTP超文本传输,HTML,fiddler抓包,URL,urlencode,HTTP首行方法,GET方法,POST方法
|
2月前
|
Linux iOS开发 网络架构
如何使用 Ping 命令监测网络丢包情况?
如何使用 Ping 命令监测网络丢包情况?
556 48
|
2月前
|
安全 Windows
【Azure Cloud Service】在Windows系统中抓取网络包 ( 不需要另外安全抓包工具)
通常,在生产环境中,为了保证系统环境的安全和纯粹,是不建议安装其它软件或排查工具(如果可以安装,也是需要走审批流程)。 本文将介绍一种,不用安装Wireshark / tcpdump 等工具,使用Windows系统自带的 netsh trace 命令来获取网络包的步骤
75 32
|
26天前
|
Web App开发 网络协议 安全
网络编程懒人入门(十六):手把手教你使用网络编程抓包神器Wireshark
Wireshark是一款开源和跨平台的抓包工具。它通过调用操作系统底层的API,直接捕获网卡上的数据包,因此捕获的数据包详细、功能强大。但Wireshark本身稍显复杂,本文将以用抓包实例,手把手带你一步步用好Wireshark,并真正理解抓到的数据包的各项含义。
80 2
|
2月前
|
网络协议 Linux
使用nmcli命令设置IP地址并排查网络故障
nmcli 是一个功能强大的网络管理工具,通过它可以轻松配置IP地址、网关和DNS,同时也能快速排查网络故障。通过正确使用nmcli命令,可以确保网络配置的准确性和稳定性,提高系统管理的效率。希望本文提供的详细步骤和示例能够帮助您更好地掌握nmcli的使用方法,并有效解决实际工作中的网络问题。
136 2
|
8月前
|
Linux
百度搜索:蓝易云【Linux系统ps命令:查看正在运行的进程】
通过这些简洁的ps命令用法,你可以方便地查看Linux系统中正在运行的进程信息。
92 1
|
8月前
|
安全 Linux 应用服务中间件
linux(三十一)系统信息命令ps查看系统进程
linux(三十一)系统信息命令ps查看系统进程
248 1
|
8月前
|
存储 监控 Linux
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 查看当前正在运行的进程信息 ps命令 使用指南
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 查看当前正在运行的进程信息 ps命令 使用指南
142 0

热门文章

最新文章