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,如需转载请自行联系原作者

相关文章
|
4月前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。
228 10
|
25天前
|
消息中间件 网络协议 Java
你不得不了解的网络IO模型知识
该文章主要讲述了网络I/O模型的相关知识,包括不同的I/O模型以及它们的特点和应用场景。
你不得不了解的网络IO模型知识
|
2月前
|
Linux 开发工具
CPU-IO-网络-内核参数的调优
CPU-IO-网络-内核参数的调优
60 7
|
2月前
|
安全 Java Linux
(七)Java网络编程-IO模型篇之从BIO、NIO、AIO到内核select、epoll剖析!
IO(Input/Output)方面的基本知识,相信大家都不陌生,毕竟这也是在学习编程基础时就已经接触过的内容,但最初的IO教学大多数是停留在最基本的BIO,而并未对于NIO、AIO、多路复用等的高级内容进行详细讲述,但这些却是大部分高性能技术的底层核心,因此本文则准备围绕着IO知识进行展开。
114 1
|
2月前
|
存储 Java Unix
(八)Java网络编程之IO模型篇-内核Select、Poll、Epoll多路复用函数源码深度历险!
select/poll、epoll这些词汇相信诸位都不陌生,因为在Redis/Nginx/Netty等一些高性能技术栈的底层原理中,大家应该都见过它们的身影,接下来重点讲解这块内容。
|
3月前
|
缓存 NoSQL Redis
redis管道操作(节省网络IO开销)
pipeline中发送的每个command都会被server立即执行,如果执行失败,将会在此后的响应中得到信息;也就是pipeline并不是表达“所有command都一起成功”的语义,管道中前面命令失败,后面命令不会有影响,继续执行。
34 1
|
3月前
|
存储 缓存 NoSQL
Redis为什么速度快:数据结构、存储及IO网络原理总结
Redis为什么速度快:数据结构、存储及IO网络原理总结
|
3月前
|
存储 Go API
Go 语言基础之常用包【flag、time、strconv、io】(2)
Go 语言基础之常用包【flag、time、strconv、io】
|
3月前
|
存储 Unix Go
Go 语言基础之常用包【flag、time、strconv、io】(1)
Go 语言基础之常用包【flag、time、strconv、io】
|
4月前
|
缓存 Linux
linux性能分析之内存分析(free,vmstat,top,ps,pmap等工具使用介绍)
这些工具可以帮助你监视系统的内存使用情况、识别内存泄漏、找到高内存消耗的进程等。根据具体的问题和需求,你可以选择使用其中一个或多个工具来进行内存性能分析。注意,内存分析通常需要综合考虑多个指标和工具的输出,以便更好地理解系统的行为并采取相应的优化措施。
107 6
下一篇
DDNS