selenium 未即时关闭引起的内存泄漏 差点死机
selenium webdriver firefox 测试自动登录获取 token,测试可以达到目的。然后日常摸鱼后发现浏览器快卡死了,切tty看top,任务没跑多少,内存倒是快榨干了,这不合理,也没有跑什么大内存程序,先把bt、sync给kill了,内存情况也没有太好转,于是看下内存占用,然后找内存占用高的进程,把这些占用高的给kill掉,内存占用就下来了。然后发现都是 firefox 相关的,然后此时我早已关闭了浏览器,然后考虑到之前用 selenium 跑测试来着,因此大概率是没正常释放资源,一看代码确实 quit 不一定执行,比如说中间发生异常,就不会执行quit,于是try except finally 补丁。奇怪的是,印象里程序异常退出、资源就释放掉了,比如父子进程
top
看在跑的进程数量、进程的 cpu 占用、内存占用,按 m 可以看内存占用的条形图free -g
可以看内存总量、剩余量,-g 表示单位是 GBps -aux | sort -k4nr | head -10
查看内存占用前十的进程。ps
用于查看当前系统的进程状态,sort
对输入的内容进行排序,-k4
指定以第四列的数值作为排序的键,按 -k4nr 表示按照第 4 列的数值进行降序排列,查看占用内存最多的进程
$ top -b | head -15
top - 11:49:40 up 9 days, 30 min, 2 users, load average: 8.29, 48.25, 32.03
任务: 424 total, 2 running, 421 sleeping, 0 stopped, 1 zombie
%Cpu(s): 3.8 us, 6.4 sy, 0.0 ni, 89.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 15270.4 total, 1092.5 free, 12969.7 used, 3985.7 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 2300.8 avail Mem
进程号 USER PR NI VIRT RES SHR %CPU %MEM TIME+ COMMAND
356300 zhang shan 20 0 15484 6000 3696 R 23.1 0.0 0:00.06 top
280353 root 20 0 181792 21336 4080 S 15.4 0.1 0:21.84 dirmngr
33103 zhangshan 20 0 2547336 36488 2244 S 7.7 0.2 141:24.28 WebExte+
35611 zhangshan 20 0 2547336 32864 2584 S 7.7 0.2 143:03.09 WebExte+
308391 zhangshan 20 0 3029928 210272 17160 S 7.7 1.3 9:40.32 firefox
1 root 20 0 22444 8900 5304 S 0.0 0.1 0:15.02 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.13 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.00 pool_wo+
$ free -g
total used free shared buff/cache available
内存: 14 12 1 2 3 2
交换: 0 0 0
$ ps -aux | sort -k4nr | head -10
zhangshan 35505 0.9 1.7 3044476 269632 ? Sl 4月20 117:21 /usr/lib/firefox/firefox --marionette --headless --remote-debugging-port 55663 --remote-allow-hosts localhost -no-remote -profile /tmp/rust_mozprofileYUuCMy
zhangshan 31216 0.9 1.6 3045484 257948 ? Sl 4月20 119:45 /usr/lib/firefox/firefox --marionette --headless --remote-debugging-port 40957 --remote-allow-hosts localhost -no-remote -profile /tmp/rust_mozprofileQkLA3z
zhangshan 31697 0.9 1.6 3046036 256520 ? Sl 4月20 115:40 /usr/lib/firefox/firefox --marionette --headless --remote-debugging-port 48411 --remote-allow-hosts localhost -no-remote -profile /tmp/rust_mozprofile6gxPMw
zhangshan 32516 0.8 1.6 3036764 254252 ? Sl 4月20 112:57 /usr/lib/firefox/firefox --marionette --headless --remote-debugging-port 55389 --remote-allow-hosts localhost -no-remote -profile /tmp/rust_mozprofileKmaAFn
zhangshan 33538 0.9 1.6 3071120 253928 ? Sl 4月20 116:45 /usr/lib/firefox/firefox --marionette --headless --remote-debugging-port 44327 --remote-allow-hosts localhost -no-remote -profile /tmp/rust_mozprofileqxHGiz
zhangshan 32997 0.9 1.5 2969196 236076 ? Sl 4月20 113:59 /usr/lib/firefox/firefox --marionette --headless --remote-debugging-port 33505 --remote-allow-hosts localhost -no-remote -profile /tmp/rust_mozprofileGBP2p7
zhangshan 306446 0.8 1.3 2969684 209232 ? Sl 4月28 9:29 /usr/lib/firefox/firefox --marionette --headless --remote-debugging-port 60987 --remote-allow-hosts localhost -no-remote -profile /tmp/rust_mozprofileWojSCe
zhangshan 308391 0.8 1.3 3029928 210272 ? Sl 4月28 9:40 /usr/lib/firefox/firefox --marionette --headless --remote-debugging-port 45885 --remote-allow-hosts localhost -no-remote -profile /tmp/rust_mozprofilexxB0wC
zhangshan 310041 0.8 1.3 2976120 217360 ? Sl 4月28 9:35 /usr/lib/firefox/firefox --marionette --headless --remote-debugging-port 57229 --remote-allow-hosts localhost -no-remote -profile /tmp/rust_mozprofile1bynOt
zhangshan 311240 0.8 1.3 2974576 209136 ? Sl 4月28 9:50 /usr/lib/firefox/firefox --marionette --headless --remote-debugging-port 40533 --remote-allow-hosts localhost -no-remote -profile /tmp/rust_mozprofile0cG0ul
$ kill 35505 31216 31697 32516 33538 32997 306446
$ ps -aux | sort -k4nr | head -10
zhangshan 316113 0.8 1.2 2966888 195944 ? Sl 4月28 9:18 /usr/lib/firefox/firefox --marionette --headless --remote-debugging-port 51917 --remote-allow-hosts localhost -no-remote -profile /tmp/rust_mozprofileY1JSG1
zhangshan 335124 1.0 1.2 3025232 188836 ? Sl 09:03 1:43 /usr/lib/firefox/firefox --marionette --headless --remote-debugging-port 38679 --remote-allow-hosts localhost -no-remote -profile /tmp/rust_mozprofile9rOJME
zhangshan 335620 1.1 1.0 2981756 157876 ? Sl 09:04 1:59 /usr/lib/firefox/firefox --marionette --headless --remote-debugging-port 48943 --remote-allow-hosts localhost -no-remote -profile /tmp/rust_mozprofiletfvn8Y
zhangshan 1244 0.0 0.6 586220 94128 ? Sl 4月20 5:34 /usr/bin/fcitx5
root 523 3.6 0.6 916988 101208 tty7 Ssl+ 4月20 479:46 /usr/lib/Xorg :0 -seat seat0 -auth /run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
zhangshan 336749 0.1 0.5 2728544 84420 ? Sl 09:04 0:15 /usr/lib/firefox/firefox -contentproc -childID 3 -isForBrowser -prefsLen 28477 -prefMapSize 241150 -jsInitLen 234952 -parentBuildID 20240416221418 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appDir /usr/lib/firefox/browser {3ca94547-d8eb-4d3f-a3e5-cc863397af7a} 335620 true tab
zhangshan 1219 0.0 0.4 586368 72796 ? Sl 4月20 0:43 xfdesktop
zhangshan 335345 0.0 0.4 2713192 77140 ? Sl 09:03 0:03 /usr/lib/firefox/firefox -contentproc -childID 3 -isForBrowser -prefsLen 28629 -prefMapSize 241150 -jsInitLen 234952 -parentBuildID 20240416221418 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appDir /usr/lib/firefox/browser {bf8e4007-45c1-46b9-9f14-fd8f9856f0d5} 335124 true tab
root 488 1.2 0.4 2507020 73324 ? Ssl 4月20 160:03 /usr/bin/opensnitchd -rules-path /etc/opensnitchd/rules
zhangshan 1148 1.1 0.3 1021576 54492 ? Sl 4月20 148:07 xfwm4
$ kill 316113 335124 335620
$ ps -aux | sort -k4nr | head -10
zhangshan 1244 0.0 0.6 586220 94128 ? Sl 4月20 5:34 /usr/bin/fcitx5
root 523 3.6 0.6 917300 101464 tty7 Ssl+ 4月20 479:46 /usr/lib/Xorg :0 -seat seat0 -auth /run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
zhangshan 1219 0.0 0.4 586368 72796 ? Sl 4月20 0:43 xfdesktop
root 488 1.2 0.4 2507020 73708 ? Ssl 4月20 160:04 /usr/bin/opensnitchd -rules-path /etc/opensnitchd/rules
zhangshan 1148 1.1 0.3 1021576 54492 ? Sl 4月20 148:07 xfwm4
zhangshan 1207 0.0 0.3 1022016 54500 ? Sl 4月20 3:59 xfce4-panel
zhangshan 355237 1.5 0.3 629832 59440 ? Sl 11:47 0:03 /usr/bin/xfce4-terminal
root 223 0.0 0.3 165244 57048 ? Ss 4月20 1:47 /usr/lib/systemd/systemd-journald
root 640 0.0 0.3 2708056 54740 ? Ssl 4月20 4:51 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
$ free -g
total used free shared buff/cache available
内存: 14 3 10 1 3 11
交换: 0 0 0