当前位置: 首页 > news >正文

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

相关文章:

  • C#学习常用类(1003)---NameObjectCollectionBase类
  • 思科动态路由RIP实验
  • 使用 python 收集获取 Linux 系统主机信息
  • 转录组入门(8): 富集分析
  • 单区域OSPF-----点到点链路上的ospf
  • 线性布局通过适配器可以动态加载view
  • 第1讲 Spring Boot 快速开始 《Kotlin + Spring Boot :下一代 Java 服务端开发》
  • 使用python selenium webdriver模拟浏览器
  • lvm的创建,扩容,回缩
  • 阿里云云市场成API经济领跑者
  • 数据库笔记15:Date类
  • Linux 磁盘分区、格式化、目录挂载
  • truncate后恢复包---FY_Recover_Data.pck 包的内容
  • MVC分页
  • Java用webSocket实现tomcat的日志实时输出到web页面
  • ----------
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • Angular 响应式表单 基础例子
  • axios 和 cookie 的那些事
  • JavaScript DOM 10 - 滚动
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • VUE es6技巧写法(持续更新中~~~)
  • 聚类分析——Kmeans
  • 前端路由实现-history
  • 学习HTTP相关知识笔记
  • 运行时添加log4j2的appender
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​ubuntu下安装kvm虚拟机
  • #{}和${}的区别?
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (2)STL算法之元素计数
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (七)理解angular中的module和injector,即依赖注入
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • .gitignore文件---让git自动忽略指定文件
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • ??myeclipse+tomcat
  • @html.ActionLink的几种参数格式
  • [ C++ ] 继承
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)
  • [AI]ChatGPT4 与 ChatGPT3.5 区别有多大
  • [Android] Implementation vs API dependency
  • [Android]Android P(9) WIFI学习笔记 - 扫描 (1)
  • [C#]DataTable常用操作总结【转】
  • [Excel] vlookup函数
  • [Java并发编程实战] 共享对象之可见性
  • [Linux]进程间通信(system V共享内存 | system V信号量)
  • [LOJ 6213]「美团 CodeM 决赛」radar
  • [MTK]安卓8 ADB执行ota升级
  • [python] RRT快速拓展随机树