故障排查相关的

进程相关

定位进程

top   //查看进程占用资源 cpu,mem
ps -aux|grep php-fpm  //查看php-fpm相关进程

分析进程

[root@izwz97ww79qca7m2kxb6hqz ~]# ll /proc/28770/fd  //查看进程28770中所有操作的文件fd
total 0
lrwx------ 1 root root 64 Jul 20 16:56 0 -> /dev/null
lrwx------ 1 root root 64 Jul 20 16:56 1 -> /dev/null
l-wx------ 1 root root 64 Jul 20 16:56 2 -> /usr/local/php/var/log/php-fpm.log
l-wx------ 1 root root 64 Jul 20 16:56 3 -> /usr/local/php/var/log/php-fpm.log
lrwx------ 1 root root 64 Jul 20 16:56 4 -> socket:[64487945]
lrwx------ 1 root root 64 Jul 20 16:56 6 -> socket:[64487946]
lrwx------ 1 root root 64 Jul 20 16:56 7 -> socket:[64487487]
lrwx------ 1 root root 64 Jul 20 16:56 8 -> anon_inode:[eventpoll]
[root@izwz97ww79qca7m2kxb6hqz ~]# ll /proc/28770/exe //进程2877程序链接
lrwxrwxrwx 1 root root 0 Jul 20 16:55 /proc/28770/exe -> /usr/local/php/sbin/php-fpm

strace的使用

监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。 简单来说就是显示进程中所有的系统调用。显示的是系统调用函数,参数,返回结果,所以要熟悉linux的系统调用函数。

linux系统调用

文件和设备访问类 比如open/close/read/write/chmod等
进程管理类 fork/clone/execve/exit/getpid等
信号类 signal/sigaction/kill 等
内存管理 brk/mmap/mlock等
进程间通信IPC shmget/semget * 信号量,共享内存,消息队列等
网络通信 socket/connect/sendto/sendmsg 等
其他

strace command 直接加上命令

strace php index.php  //追踪index.php脚本运行

strace -p pid 动态追踪正在运行的进程

strace -p 28770  //每秒钟检测进程的系统调用信息
strace -tt -T -v -f -e trace=file -o /data/log/strace.log -s 1024 -p 23489
-tt 在每行输出的前面,显示毫秒级别的时间
-T 显示每次系统调用所花费的时间
-v 对于某些相关调用,把完整的环境变量,文件stat结构等打出来。
-f 跟踪目标进程,以及目标进程创建的所有子进程
-e 控制要跟踪的事件和跟踪行为,比如指定要跟踪的系统调用名称
-o 把strace的输出单独写到指定的文件
-s 当系统调用的某个参数是字符串时,最多输出指定长度的内容,默认是32个字节
-p 指定要跟踪的进程pid, 要同时跟踪多个pid, 重复多次-p选项即可。
​
-e trace=file     跟踪和文件访问相关的调用(参数中有文件名)
-e trace=process  和进程管理相关的调用,比如fork/exec/exit_group
-e trace=network  和网络通信相关的调用,比如socket/sendto/connect
-e trace=signal    信号发送和处理相关,比如kill/sigaction
-e trace=desc  和文件描述符相关,比如write/read/select/epoll等
-e trace=ipc 进程间通信相关,比如shmget等

 

可以发现strace显示出来,每一行都是一个系统调用,=左边是传参和系统函数,右边是返回结果。

网络相关

tcpdump工具

https://linux.cn/article-3967-1-qqmail.html

指定端口

tcpdump port 80

指定主机

- 抓取所有经过 eth1,目的或源地址是 192.168.1.1 的网络数据
# tcpdump host 192.168.1.1
- 源地址
# tcpdump src host 192.168.1.1
- 目的地址
# tcpdump dst host 192.168.1.1

指定网卡

tcpdump -i eth0

指定协议

tcpdump -i eth0 ip
tcpdump -i eth0 tcp
tcpdump -i eth0 udp

解读tcpdump返回的信息

[root@izwz97ww79qca7m2kxb6hqz ~]# tcpdump port 80 and host 14.18.155.82
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
​
14:37:46.803400 IP 14.18.155.82.50365 > izwz97ww79qca7m2kxb6hqz.http: Flags [S], seq 1624071665, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
​
14:37:46.803466 IP izwz97ww79qca7m2kxb6hqz.http > 14.18.155.82.50365: Flags [S.], seq 2906330048, ack 1624071666, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
​
14:37:46.803626 IP 14.18.155.82.50364 > izwz97ww79qca7m2kxb6hqz.http: Flags [S], seq 2880783494, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
​
14:37:46.803642 IP izwz97ww79qca7m2kxb6hqz.http > 14.18.155.82.50364: Flags [S.], seq 3344087554, ack 2880783495, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
​
14:37:46.810872 IP 14.18.155.82.50364 > izwz97ww79qca7m2kxb6hqz.http: Flags [.], ack 1, win 16425, length 0 
​
14:37:46.811612 IP 14.18.155.82.50365 > izwz97ww79qca7m2kxb6hqz.http: Flags [.], ack 1, win 16698, length 0

14:37:46.803400 IP 14.18.155.82.50365 > izwz97ww79qca7m2kxb6hqz.http: Flags [S], seq 1624071665, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0

14:37:46.810872 :时间 时分秒毫秒
IP : 是IP包
14.18.155.82.50364 : 表示这个包的源IP为14.18.155.82,源端口为50364
“ > ” : 表示数据包的传输方向
izwz97ww79qca7m2kxb6hqz.http :主机名和端口
Flags:
[S]: SYN(开始连接)
[.]: 没有 Flag
[P]: PSH(推送数据)
[F]: FIN (结束连接)
[R]: RST(重置连接)
win:滑动窗口大小为8192
mss 大小为1460(即可接收的最大包长度,通常为MTU减40字节,IP头和TCP头各20字节)

注意:三次握手中,SYN的参数seq=j, 对应的返回seq=i;ACK=j+1,但是第三次握手中,ACK=1,而不是i+1,主要原因是tcpdump简化了显示。真实的值还是i+1。如果要显示绝对数值,加一个-S即可

SYN包会有个序列号seq=j,而应答这个SYN包,ack=j+1,对应的序列号加1;FIN包也是一样,也有一个序列号seq.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

runtoweb3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值