我们在 7.4.1708 上运行 PostgreSQL 10.3。昨天,突然有东西占用了大约 2.2GB 的交换空间。
我只找到了几个进程,重新启动它们后只得到了大约 200MB。
我已经删除了 pagecache 并将 vm.swappiness 设置为 0,但 swap 并未删除。
我搜索过声称交换的内容但没有找到。
- 免费,2025MB 交换空间被索取
- 顶部什么也没说声称交换
- smem 表示没有申领 swap
root@server# free -m total used free shared buff/cache available Mem: 1031502 9793 308314 201749 713394 812428 Swap: 4095 2025 2070
root@server#smem -s swap 178243 root python /bin/smem -s swap 0 6184 6682 10120 1 root /usr/lib/systemd/systemd -- 8 16632 17267 20720 7929 root /usr/lib/systemd/systemd-jo 108 12624 52410 94280
root@server#top -o SWAP PID USER PR NI VIRT RES SHR SWAP S %CPU %MEM TIME+ 7929 root 20 0 144380 94436 94148 108 S 0.0 0.0 29:32.52 1 root 20 0 206152 20720 5480 8 S 0.0 0.0 61:07.68 2 root 20 0 0 0 0 0 S 0.0 0.0 0:22.39
我不想关闭 swap 和 swapon。因为这是我们的主要数据库服务器,我听说关闭 swap 可能会使系统不稳定。
我该怎么办?如何找到哪个进程声明了交换空间?