Ubuntu启动任何应用慢(2~4秒)排查和分析

Ubuntu 24.04在IT刚安装完成的时候,启动应用的速度还是很快的,但是不久之后(中间有几次重启),打开一个网络链接居然要2 ~ 3秒后才会在浏览器打开标签页,不仅如此,打开VS Code、甚至文件应用居然也会卡个几秒!

通过htop、iotop等性能工具检查发现资源使用正常,未有异常的情况发生。头几天我还忍受着它继续使用,但是后面打开JIRA速度实在太慢了,而且点击链接后不立刻打开,我还以为没点到呢。

后面决定从打开应用这个过程入手。

调查VS Code耗时情况

c 复制代码
strace -T -tt -o app_start.log code

在终端里执行在终端里执行这个指令后,发现在wait4和后面流程中介隔了1.5秒,可能一开始觉得是不是wait这里的问题,但是这里无法继续进一步分析了,没有子线程信息。加上-f后虽然有子线程信息,但是什么都分析不出来,时间分布都很均匀。

scss 复制代码
16:05:43.705640 rt_sigprocmask(SIG_SETMASK, [], ~[KILL STOP RTMIN RT_1], 8) = 0 <0.000111>
16:05:43.705946 wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 8158 <1.666915>
16:05:45.372907 --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=8158, si_uid=1000, si_status=0, si_utime=10 /* 0.10 s */, si_stime=2 /* 0.02 s */} ---
16:05:45.372928 rt_sigreturn({mask=[]}) = 8158 <0.000004>

调查文件应用(nautilus)耗时情况

c 复制代码
strace -T -tt -o app_start.log nautilus
swift 复制代码
16:23:00.733757 execve("/usr/bin/nautilus", ["nautilus"], 0x7ffc22136850 /* 64 vars */) = 0 <0.015157>
16:23:00.749211 brk(NULL)               = 0x58c3c2f93000 <0.000007>
16:23:00.749272 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x700ff818f000 <0.000009>
16:23:00.749310 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (没有那个文件或目录) <0.000008>
16:23:00.750031 openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 <0.000139>
16:23:00.750205 fstat(3, {st_mode=S_IFREG|0644, st_size=67811, ...}) = 0 <0.000006>
16:23:00.750243 mmap(NULL, 67811, PROT_READ, MAP_PRIVATE, 3, 0) = 0x700ff817e000 <0.000009>
16:23:00.750271 close(3)                = 0 <0.000007>
16:23:00.750304 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libnautilus-extension.so.4", O_RDONLY|O_CLOEXEC) = 3 <0.000663>
16:23:00.750989 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832 <0.000007>
16:23:00.751018 fstat(3, {st_mode=S_IFREG|0644, st_size=43080, ...}) = 0 <0.000007>
16:23:00.751047 mmap(NULL, 45256, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x700ff8172000 <0.000009>
16:23:00.751075 mmap(0x700ff8175000, 16384, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x700ff8175000 <0.000653>
16:23:00.751748 mmap(0x700ff8179000, 12288, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x700ff8179000 <0.000010>
16:23:00.751778 mmap(0x700ff817c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x9000) = 0x700ff817c000 <0.000009>
16:23:00.751855 close(3)                = 0 <0.000060>
16:23:00.751941 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libglib-2.0.so.0", O_RDONLY|O_CLOEXEC) = 3 <0.011707>
16:23:00.763739 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832 <0.000066>
16:23:00.763878 fstat(3, {st_mode=S_IFREG|0644, st_size=1343056, ...}) = 0 <0.000074>
16:23:00.764038 mmap(NULL, 1343960, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x700ff8029000 <0.000067>
16:23:00.764125 mmap(0x700ff8047000, 655360, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e000) = 0x700ff8047000 <0.012345>
16:23:00.776499 mmap(0x700ff80e7000, 557056, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xbe000) = 0x700ff80e7000 <0.000011>
16:23:00.776535 mmap(0x700ff816f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x146000) = 0x700ff816f000 <0.000011>
16:23:00.776571 mmap(0x700ff8171000, 472, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x700ff8171000 <0.000008>
16:23:00.776604 close(3)                = 0 <0.000008>
16:23:00.776633 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libgtk-4.so.1", O_RDONLY|O_CLOEXEC) = 3 <0.103462>
16:23:00.880148 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832 <0.000008>
16:23:00.880221 fstat(3, {st_mode=S_IFREG|0644, st_size=11789432, ...}) = 0 <0.000006>
16:23:00.880259 mmap(NULL, 11823696, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x700ff7400000 <0.000017>
 16:23:00.880298 mmap(0x700ff74b0000, 4825088, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xb0000) = 0x700ff74b0000 <0.107914>
16:23:00.988278 mmap(0x700ff794a000, 4374528, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x54a000) = 0x700ff794a000 <0.000069>
16:23:00.988518 mmap(0x700ff7d76000, 1871872, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x975000) = 0x700ff7d76000 <0.000079>
16:23:00.988685 mmap(0x700ff7f3f000, 31312, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x700ff7f3f000 <0.000011>
16:23:00.988781 close(3)                = 0 <0.000011>
16:23:00.988894 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libpango-1.0.so.0", O_RDONLY|O_CLOEXEC) = 3 <0.004662>
16:23:00.993596 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832 <0.000007>
16:23:00.993630 fstat(3, {st_mode=S_IFREG|0644, st_size=433912, ...}) = 0 <0.000006>
16:23:00.993659 mmap(NULL, 436800, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x700ff7fbe000 <0.000011>
16:23:00.993689 mmap(0x700ff7fd1000, 233472, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13000) = 0x700ff7fd1000 <0.004579>
16:23:00.998308 mmap(0x700ff800a000, 106496, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4c000) = 0x700ff800a000 <0.000011>
16:23:00.998342 mmap(0x700ff8024000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x65000) = 0x700ff8024000 <0.000010>
16:23:00.998381 close(3)                = 0 <0.000008>
16:23:00.998410 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0", O_RDONLY|O_CLOEXEC) = 3 <0.002237>
16:23:01.000739 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832 <0.000059>
16:23:01.000877 fstat(3, {st_mode=S_IFREG|0644, st_size=186744, ...}) = 0 <0.000064>
16:23:01.000963 mmap(NULL, 184808, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x700ff7f90000 <0.000013>
16:23:01.000996 mmap(0x700ff7f98000, 110592, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x700ff7f98000 <0.002262>
16:23:01.003279 mmap(0x700ff7fb3000, 36864, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x23000) = 0x700ff7fb3000 <0.000011>
16:23:01.003313 mmap(0x700ff7fbc000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2c000) = 0x700ff7fbc000 <0.000021>
16:23:01.003366 close(3)                = 0 <0.000008>
16:23:01.003396 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libcairo.so.2", O_RDONLY|O_CLOEXEC) = 3 <0.010916>
16:23:01.014341 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832 <0.000008>
16:23:01.014371 fstat(3, {st_mode=S_IFREG|0644, st_size=1321832, ...}) = 0 <0.000009>
16:23:01.014402 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x700ff7f8e000 <0.000010>
16:23:01.014435 mmap(NULL, 1325864, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x700ff72bc000 <0.000012>
16:23:01.014466 mmap(0x700ff72d0000, 987136, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x700ff72d0000 <0.011395>
16:23:01.025884 mmap(0x700ff73c1000, 229376, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x105000) = 0x700ff73c1000 <0.000012>
16:23:01.025917 mmap(0x700ff73f9000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13d000) = 0x700ff73f9000 <0.000010>
16:23:01.025952 mmap(0x700ff73ff000, 2856, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x700ff73ff000 <0.000008>
16:23:01.025987 close(3)                = 0 <0.000008>
16:23:01.026016 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libgraphene-1.0.so.0", O_RDONLY|O_CLOEXEC) = 3 <0.001234>
16:23:01.027273 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832 <0.000007>
16:23:01.027303 fstat(3, {st_mode=S_IFREG|0644, st_size=116728, ...}) = 0 <0.000007>
16:23:01.027332 mmap(NULL, 119528, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x700ff7f70000 <0.000009>
16:23:01.027359 mmap(0x700ff7f78000, 61440, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x700ff7f78000 <0.001267>
16:23:01.028645 mmap(0x700ff7f87000, 20480, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17000) = 0x700ff7f87000 <0.000010>
16:23:01.028674 mmap(0x700ff7f8c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b000) = 0x700ff7f8c000 <0.000009>
16:23:01.028710 close(3)                = 0 <0.000007>
16:23:01.028736 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libgio-2.0.so.0", O_RDONLY|O_CLOEXEC) = 3 <0.018699>
16:23:01.047474 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832 <0.000009>
16:23:01.047511 fstat(3, {st_mode=S_IFREG|0644, st_size=1887792, ...}) = 0 <0.000009>
16:23:01.047546 mmap(NULL, 1897376, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x700ff70ec000 <0.000063>
16:23:01.047636 mmap(0x700ff7125000, 1142784, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x39000) = 0x700ff7125000 <0.019681>
16:23:01.067367 mmap(0x700ff723c000, 479232, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x150000) = 0x700ff723c000 <0.000012>
16:23:01.067406 mmap(0x700ff72b1000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1c4000) = 0x700ff72b1000 <0.000011>
16:23:01.067535 mmap(0x700ff72ba000, 5024, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x700ff72ba000 <0.000009>
16:23:01.067583 close(3)                = 0 <0.000008>
16:23:01.067616 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libgobject-2.0.so.0", O_RDONLY|O_CLOEXEC) = 3 <0.003906>
16:23:01.071555 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832 <0.000007>
16:23:01.071590 fstat(3, {st_mode=S_IFREG|0644, st_size=399752, ...}) = 0 <0.000007>
16:23:01.071623 mmap(NULL, 404536, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x700ff7089000 <0.000012>
16:23:01.071654 mmap(0x700ff7098000, 225280, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xf000) = 0x700ff7098000 <0.004280>
16:23:01.075957 mmap(0x700ff70cf000, 102400, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x46000) = 0x700ff70cf000 <0.000010>
16:23:01.075986 mmap(0x700ff70e8000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5e000) = 0x700ff70e8000 <0.000009>
16:23:01.076030 close(3)                = 0 <0.000007>
...
16:23:01.901236 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libicudata.so.74", O_RDONLY|O_CLOEXEC) = 3 <0.250986>
16:23:02.152390 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832 <0.000107>
...

可以看到加载so库(libicudata.so.74)的时候,时间都比正常要长很多(250 毫秒),其他的库也加载了有几十毫秒,着显然是不正常的!

从日志看,有什么东西让整个系统和openat相关的操作都变慢了!

后来突然想起htop的时候有注意到一个奇怪的程序可能和会影响到这块(就像Windows自带的杀毒软件一样) ------ eset。

eset是一个杀毒软件,它在Windows上不至于造成这么严重的性能衰退,至少比Windows自带的杀毒软件每次都要扫描所有相关文件的内容好很多,所以也只是怀疑而已,于是我们现在就来开始试试关闭eset后看看效果如何。

找到罪魁祸首 ESET

执行下面的指令后,在打开文件应用、VS Code和其他各种应用,全部都秒开了... 我连strace都不需要再使用了,也不需要继续排查了。原来罪魁祸首是ESET... 没想到它和Windows上的完全不一样,它居然在Linux上也要扫描所有的文件......

arduino 复制代码
sudo systemctl stop efs.service
相关推荐
wdxylb1 小时前
云原生俱乐部-shell知识点归纳(1)
linux·云原生
飞雪20072 小时前
Alibaba Cloud Linux 3 在 Apple M 芯片 Mac 的 VMware Fusion 上部署的完整密码重置教程(二)
linux·macos·阿里云·vmware·虚拟机·aliyun·alibaba cloud
路溪非溪2 小时前
关于Linux内核中头文件问题相关总结
linux
Lovyk5 小时前
Linux 正则表达式
linux·运维
Fireworkitte6 小时前
Ubuntu、CentOS、AlmaLinux 9.5的 rc.local实现 开机启动
linux·ubuntu·centos
sword devil9006 小时前
ubuntu常见问题汇总
linux·ubuntu
ac.char6 小时前
在CentOS系统中查询已删除但仍占用磁盘空间的文件
linux·运维·centos
淮北也生橘128 小时前
Linux的ALSA音频框架学习笔记
linux·笔记·学习
华强笔记11 小时前
Linux内存管理系统性总结
linux·运维·网络
十五年专注C++开发12 小时前
CMake进阶: CMake Modules---简化CMake配置的利器
linux·c++·windows·cmake·自动化构建