Linux性能优化-狂打日志的问题 磁盘IO与网络

https://blog.csdn.net/hixiaoxiaoniao/article/details/86534555    Linux性能优化-狂打日志的问题

iostat  pidstat  strace lsof

 

https://blog.csdn.net/weixin_31456563/article/details/116729876

查看各核 CPU 情况 mpstat -P ALL 1 3

 

https://blog.csdn.net/hixiaoxiaoniao/article/details/86671893

磁盘IO讲解

linux

tc  网络流量控制

https://blog.csdn.net/hixiaoxiaoniao/article/details/88391691

查看tc配置规则,显示有30%的丢包率

  1.  
    tc -s qdisc show dev eth0
  2.  
    qdisc netem 8001: root refcnt 2 limit 1000 loss 30%
  3.  
     Sent 9199 bytes 163 pkt (dropped 83, overlimits 0 requeues 0) 
  4.  
     backlog 0b 0p requeues 0

删除tc规则

tc qdisc del dev eth0 root netem loss 30%

---------------------------------------------------
tcpdump 对网络上的数据包进行截获 netstat -i 查看有无丢包

yum install tcpdump -y 

Wireshark(以前是 etherea是 Windows下非常简单易用的抓包工具。但在 Linux下很难找到一个好用的图形化抓包工具
还好有 Tcpdump。我们可以用 Tcpdump+ Wireshark的完美组合实现:在 Linux里抓包,然后在 Windows里分析包

hping3 模拟发送SYN数据包

(1)tcp: ip Icmp arp rarp和tcp、udp、imp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
(2)-i eth1:只抓经过接囗eth1的包
3)-t:不显示时间戳
4)-s 0:抓取数据包时默认抓取长度为68字节。加上S0后可以抓到完整的数据包
(5)-c100:只抓取100个数据包
(6) dst port  !22:不抓取目标端口是22的数据包
(7) src net  192168.1.024:数据包的源网络地址为192168.1.0/24
(8)-w  ./target. cap:保存成cap文件,方便用 ethereal(即 wireshark)分析

 

--------------------------------------
# 只关注套接字统计
$ netstat -s | grep socket
    73 resets received for embryonic SYN_RECV sockets
    308582 TCP sockets finished time wait in fast timer
    8 delayed acks further delayed because of locked socket
    290566 times the listen queue of a socket overflowed
    290566 SYNs to LISTEN sockets dropped

# 稍等一会,再次运行
$ netstat -s | grep socket
    73 resets received for embryonic SYN_RECV sockets
    314722 TCP sockets finished time wait in fast timer
    8 delayed acks further delayed because of locked socket
    344440 times the listen queue of a socket overflowed
    344440 SYNs to LISTEN sockets dropped

根据两次统计结果中 socket overflowed 和 sockets dropped 的变化,你可以看到,有大量的套接字丢包,并且丢包都是套接字队列溢出导致的。所以,接下来,我们应该分析连接队列的大
小是不是有异常。

你可以执行下面的命令,查看套接字的队列大小:

ss -ltnp
State     Recv-Q     Send-Q            Local Address:Port            Peer Address:Port
LISTEN    10         10                      0.0.0.0:80                   0.0.0.0:*         users:(("nginx",pid=10491,fd=6),("nginx",pid=10490,fd=6),("nginx",pid=10487,fd=6))
LISTEN    7          10                            *:9000                       *:*         users:(("php-fpm",pid=11084,fd=9),...,("php-fpm",pid=10529,fd=7))

这次可以看到,Nginx 和 php-fpm 的监听队列 (Send-Q)只有 10,而 nginx 的当前监听队列长度 (Recv-Q)已经达到了最大值,php-fpm 也已经接近了最大值。很明显,套接字监听队
列的长度太小了,需要增大

https://blog.csdn.net/weixin_30235225/article/details/102054174
posted @ 2021-10-26 11:01  up~up  阅读(268)  评论(0)    收藏  举报