问题现象描述
现象linux操作系统卡顿(就是很慢),但是系统任然能够使用。
文章一步步的排查并且定位问题。
排查步骤
1. 使用top命令查看CPU是否占用过高。(未发现)排除问题
2. 使用df -h查看硬盘是否被占满。(未发现)排除问题
3. 使用cat命令在/tmp目录下执行速度很快,在/home/xxx 目录先执行很慢。(猜测和硬盘有关)但是他们是同一块硬盘。由于该问题在很多电脑上都出现暂时排除硬盘坏道导致。(猜测和硬盘读写有关,如果硬盘读写服务器托管网被占满有可能会导致读写速度缓慢的情况)
使用一下命令查看IO状态
# 安装
sudo apt-get install iotop
sudo iotop
未发现文件读写很多的情况。
4. 发现vim和cat命令都很卡,所以直接使用strace定位cat命令的问题。
sudo apt install strace
strace -tt -o tt.log cat xxxx
发现在这个位置执行了快2分钟。大概率问题就在这里。
在日志中看头看到这样的的读取,这个非系统so文件。
通过16923可以知道进程,问题大概定位到那个应用导致的。
5. 通过进程号查找进程环境变量
cat /proc/进程号/environ
最终发现该进程PRE_LOAD了一个so文件,该so文件修改了读取文件的函数逻辑导致程序卡顿。
他其实是一个监控软件,监控系统文件读写情况(安全相关)
6. 通过进程号查应用
ps -ef | grep 进程ID
通过dpkg -S 查询应用名称。
strace命令使用
strace是一个用于跟踪程序系统调用的Linux命令。它可以记录程序执行时与操作系统内核之间的交互,包括系统调用、信号传递、进程间通信等。下面我将以教程的方式分点说明如何使用 strace命令,并附带一个简单的案例。
1.安装 strace
在大多数Linux发行版中,`strace` 工具是预装的。如果你的系统没有安装,你可以使用包管理器安装它。
– 在Debian/Ubuntu系统中使用以下命令安装:
sudo apt-get install strace
– 在Red Hat/CentOS系统中使用以下命令安装:
sudo yum install strace
2. 基本使用
要使用 `strace`,只需在终端中输入命令,然后跟上要跟踪的命令。例如:
strace ls
这将会显示 `ls` 命令的系统调用。
3. 输出到文件
你可以将 `strace` 的输出保存到文件中,以便后续分析:
“`bash
strace -o output.txt ls
“`
4. 显示系统调用的详细信息
默认情况下,`strace` 只会显示系统调用的名称。如果你想要查看更详细的信息,可以使用 `-v` 选项:
“`bash
strace -v ls
“`
5. 跟踪特定系统调用
如果你只对特定的系统调用感兴趣,你可以使用 `-e` 选项来指定:
“`bash
strace -e open ls
“`
以上命令将只跟踪 `open` 系统调用。
6. 案例:跟踪一个程序
让我们以一个简单的C程序为例。假设有一个名为 `example.c` 的C程序:“`c
#include
int main() {
printf("Hello, World!n");
return 0;
}
首先,编译这个程序:
gcc -o example example.c
然后,使用 `strace` 跟踪这个程序:
strace ./example
这将输出 `example` 程序执行期间的所有系统调用信息,包括文件操作、内存分配等。
以上就是使用 `strace` 的基本教程和一个简单的案例。请注意,`strace` 可以提供非常详细的输出,因此在分析大型程序时可能需要使用其他工具来处理和筛选输出。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: 【C++】多态
1. 多态的概念
2. 多态的定义及实现
3. 抽象类
4. 多态的原理
5. 单继承和多继承关系中的虚函数表
6. 继承和多态性的常见问题目录 1. 多态的概念 1.1 概念 2. 多态的定义及实现 2.1 多态的构成条件 2.2 虚函数 2.3 虚函数的重写 2.3.1 重写的一些特殊情况 2.4 final和override 2.5 重载、覆盖(重写)、隐藏(重定义)的对比 3. 抽象类 3…