strace

查找linux下进程占用CPU过高的原因,以php-fpm为例

狂风中的少年 提交于 2021-02-10 09:48:55
很多时候,线上服务器的进程在某时间段内长时间占用CPU过高,为了优化,我们需要找出原因。 1、找出占用CPU最高的10个进程 ps aux | sort -k3nr | head -n 10 或查看占用内存最高的10个进程 ps aux | sort -k4nr | head -n 10   或者使用 top ,按 1 显示CPU列表,再按 shift+p 以CPU排序 top    2、对进程进行跟踪查看 查看进程打开的文件 lsof -p 进程PID 查看进程在处理的文件 ll /proc/进程PID/fd 查看进程的内存使用情况 pmap 进程PID 通过strace来跟踪进程的系统调用 strace -p 进程PID 当然我们也可以查看汇总的信息 strace -cp 进程PID 如果我们想跟踪某进程所有的系统调用,并统计调用时间,并导出为文件,可用如下命令 strace -o 导出文件 -T -tt -e trace=all -p 进程PID    3、查找php-fpm占用过高的原因 我们可以配置php-fpm的慢日志,查找是哪些文件导致php-fpm占用过高。 先找到php-fpm.conf文件位置 ps -ef|grep php 修改php-fpm.conf,并打开日志选项 ;错误日志 error_log = log/php-fpm.log ;访问日志 access

How to get a process tree trace/log of a process in linux?

独自空忆成欢 提交于 2021-02-08 03:39:29
问题 I want to know what executables a script launches and in what order (and trace those executables recursively). For example, let's say I have a bash script here (called abc.sh): #!/bin/bash ls gcc I'd like to run this script with a "trace/log command" and get something like this: abc.sh -- ls |-- gcc -- cpp -- cc1 ... etc. This show that abc.sh called ls, and gcc. gcc, in turn, called cpp and cc1. Is this possible? How can I do it? A tree view like the above would be nice, but a simpler view

linux操作系统可以ping通ssh连接无响应

我的梦境 提交于 2021-01-20 17:18:20
一.问题描述 某数据节点服务器频繁无法连接,服务器间出现可ping通但ssh无法连接的情况,使用带外地址登录后远程控制也无法显示正常界面,重启后会短暂恢复。 二.排查问题 重启服务器后检查服务器SSH状态均为正常,无奈只能去Redhat官网提case并sosreport收集日志等信息反馈后等待分析结果。 无法登录时得到的报错信息如下: 请在系统中执行以下命令,并将输出结果反馈 # ssh -vvv IP_address </br> 收集strace的结果 # strace -fvttTyyx -s 4096 -o /tmp/strace.txt ssh IP_address </br> 收集如下命令的输出结果,查看是否有RPM包丢失 # rpm -Va &> rpmva.out </br> 三.解决方案 将 /etc/ssh/sshd_config 文件中的如下条目取消注释,并重启sshd服务:   # cat etc/ssh/sshd_config | grep DNS </br> 将sshd_config中UseDNS选项yes改为no并删掉   #vi /etc/ssh/sshd_config   UseDNS no   # systemctl restart sshd.service 重启解决,ssh正常连接使用 四.原因分析 UseDNS指定sshd是否应查找远程主机名

Linux性能优化(十)——CPU性能分析工具

空扰寡人 提交于 2021-01-18 10:25:20
一、CPU性能指标 1、CPU使用率 CPU使用率是最常见的一个性能指标,描述了非空闲时间占总CPU 时间的百分比,根据CPU上运行任务的不同,分为用户CPU、系统CPU、等待IO CPU、软中断和硬中断等。 用户CPU使用率包括用户态CPU使用率(user)和低优先级用户态CPU使用率(nice),表示CPU在用户态运行的时间百分比。用户CPU使用率高,通常说明有应用程序比较繁忙。 系统CPU使用率,表示CPU在内核态运行的时间百分比(不包括中断)。系统CPU使用率高,说明内核比较繁忙。 等待IO的CPU使用率,即iowait,表示等待IO的时间百分比。iowait 高,通常说明系统与硬件设备的IO交互时间比较长。 软中断和硬中断的CPU使用率,分别表示内核调用软中断处理程序、硬中断处理程序的时间百分比。中断CPU使用率高,通常说明系统发生大量的中断。 窃取CPU使用率(steal)和客户CPU使用率(guest),分别表示被其它虚拟机占用的CPU时间百分比,和运行客户虚拟机的CPU 时间百分比。 2、CPU平均负载 CPU平均负载是系统的平均活跃进程数,反应了系统的整体负载情况,主要包括三个数值,分别指过去1分钟、过去5分钟和过去15分钟的平均负载。理想情况下,平均负载等于逻辑CPU个数,表示每个CPU都恰好被充分利用。如果平均负载大于逻辑CPU个数,表示负载比较重。 3

这些最常用的Linux命令,每一条都应该学会!

醉酒当歌 提交于 2021-01-05 01:17:38
linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心。 线上查询及帮助命令(2个) man:查看命令帮助,命令的词典,更复杂的还有info,但不常用。 help:查看Linux内置命令的帮助,比如cd命令。 文件和目录操作命令(18个) ls:全拼list,功能是列出目录的内容及其内容属性信息。 cd:全拼change directory,功能是从当前工作目录切换到指定的工作目录。 cp:全拼copy,其功能为复制文件或目录。 find:查找的意思,用于查找目录及目录下的文件。 mkdir:全拼make directories,其功能是创建目录。 mv:全拼move,其功能是移动或重命名文件。 pwd:全拼print working directory,其功能是显示当前工作目录的绝对路径。 rename:用于重命名文件。 rm:全拼remove,其功能是删除一个或多个文件或目录。 rmdir:全拼remove empty directories,功能是删除空目录。 touch:创建新的空文件,改变已有文件的时间戳属性。 tree:功能是以树形结构显示目录下的内容。 basename:显示文件名或目录名。 dirname:显示文件或目录路径。 chattr

收集一些非常实用的Linux命令

家住魔仙堡 提交于 2021-01-02 03:14:42
linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心。 线上查询及帮助命令(2个) man:查看命令帮助,命令的词典,更复杂的还有info,但不常用。 help:查看Linux内置命令的帮助,比如cd命令。 文件和目录操作命令(18个) ls:全拼list,功能是列出目录的内容及其内容属性信息。 cd:全拼change directory,功能是从当前工作目录切换到指定的工作目录。 cp:全拼copy,其功能为复制文件或目录。 find:查找的意思,用于查找目录及目录下的文件。 mkdir:全拼make directories,其功能是创建目录。 mv:全拼move,其功能是移动或重命名文件。 pwd:全拼print working directory,其功能是显示当前工作目录的绝对路径。 rename:用于重命名文件。 rm:全拼remove,其功能是删除一个或多个文件或目录。 rmdir:全拼remove empty directories,功能是删除空目录。 touch:创建新的空文件,改变已有文件的时间戳属性。 tree:功能是以树形结构显示目录下的内容。 basename:显示文件名或目录名。 dirname:显示文件或目录路径。 chattr

服务器(Linux)缓冲跟踪类型的系统调用分析

走远了吗. 提交于 2020-12-26 16:57:11
本文主要讲解缓冲跟踪型的系统调用分析,主要目的是为了探究和分析CPU在内核或与用户空间结合部分的系统调用细节,从中可以发现一些问题,用于性能或者其他问题研究。 首先是两个概念: 断点跟踪类型,其是在进行取样时,中断目标程序的执行来获取数据的,比如strace命令。 缓冲跟踪类型,这就和断点跟踪不一样了,它是可以将获取到的检测数据缓存在内核里,而目标程序可以不中断执行。dtrace命令就属于缓冲跟踪。 系统调用有很多,Linux操作系统可能就有几百个(具体没有统计)。 案例1: 我们以进程间通信相关的一个系统调用kill为例来检测系统中的具体情况。命令如下: sudo dtrace -qn 'syscall::kill:entry { printf("%Y: %s (PID %d) sent a SIG %d to PID %d\n",walltimestamp,execname,pid,arg1,arg0);}' 执行结果如下,其中PID=1位init进程,它是所有其他用户进程的祖先进程,并且会监视其他进程。 我们来分析下第一行:init 进程发送了一个SIG信号 15 到PID -13929,其中SIG 15 是指SIGTERM 信号 案例2: 我们可以利用dtrace命令对Postgres数据库进程进行系统调用分析。 命令: sudo dtrace -n 'syscall::

strace

女生的网名这么多〃 提交于 2020-12-26 10:19:29
strace 在linux 里面监听某个进程PID 的支行情况 可以看到内核里的东东 来源: oschina 链接: https://my.oschina.net/u/4286781/blog/4841752

Linux下TCP延迟确认(Delayed Ack)机制导致的时延问题分析

三世轮回 提交于 2020-12-23 11:35:13
原文: link . 案例一:同事随手写个压力测试程序,其实现逻辑为:每秒钟先连续发N个132字节的包,然后连续收N个由后台服务回显回来的132字节包。其代码简化如下: char sndBuf [ 132 ] ; char rcvBuf [ 132 ] ; while ( 1 ) { for ( int i = 0 ; i < N ; i ++ ) { send ( fd , sndBuf , sizeof ( sndBuf ) , 0 ) ; . . . } for ( int i = 0 ; i < N ; i ++ ) { recv ( fd , rcvBuf , sizeof ( rcvBuf ) , 0 ) ; . . . } sleep ( 1 ) ; } 在实际测试中发现,当N大于等于3的情况,第2秒之后,每次第三个recv调用,总会阻塞40毫秒左右,但在分析Server端日志时,发现所有请求在Server端处理时耗均在2ms以下。 当时的具体定位过程如下:先试图用strace跟踪客户端进程,但奇怪的是:一旦strace attach上进程,所有收发又都正常,不会有阻塞现象,一旦退出strace,问题重现。经同事提醒,很可能是strace改变了程序或系统的某些东西(这个问题现在也还没搞清楚),于是再用tcpdump抓包分析,发现Server后端在回现应答包后

linux 常用命令手册

会有一股神秘感。 提交于 2020-12-12 21:25:03
命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更复杂的还有info,但不常用。 help 查看Linux内置命令的帮助,比如cd命令。 文件和目录操作命令(18个) ls 全拼list,功能是列出目录的内容及其内容属性信息。 cd 全拼change directory,功能是从当前工作目录切换到指定的工作目录。 cp 全拼copy,其功能为复制文件或目录。 find 查找的意思,用于查找目录及目录下的文件。 mkdir 全拼make directories,其功能是创建目录。 mv 全拼move,其功能是移动或重命名文件。 pwd 全拼print working directory,其功能是显示当前工作目录的绝对路径。 rename 用于重命名文件。 rm 全拼remove,其功能是删除一个或多个文件或目录。 rmdir 全拼remove empty directories,功能是删除空目录。 touch 创建新的空文件,改变已有文件的时间戳属性。 tree 功能是以树形结构显示目录下的内容。 basename 显示文件名或目录名。 dirname 显示文件或目录路径。 chattr 改变文件的扩展属性。 lsattr 查看文件扩展属性。 file 显示文件的类型。 md5sum 计算和校验文件的MD5值。 查看文件及内容处理命令(21个) cat