我有一个具有 16G RAM 和 23G Swap 的系统(ZFS 中的 6 个 3TB 磁盘),目前交换率为 98%,但我只能看到使用了 5G 的 RAM。
我已经检查了所有可能的资源来查找谁在使用交换空间。
ps -vax | awk 'NR==1{print} {VSZ+=$7;RSS+=$8}END{print VSZ,RSS}'
PID STAT TIME SL RE PAGEIN VSZ RSS LIM TSIZ %CPU %MEM COMMAND
6106336 894176
各种其他工具(top -w ... sort SWAP)也没有提示什么使用了 23G 交换空间。
swapoff -a
失败并显示cannot allocate memory
.
我想避免重新启动,所以有什么提示如何恢复(现在)缓慢的机器吗?
(freenas 11.2-稳定 FreeBSD)
答案1
我在 FreeBSD 11.3 服务器(32 GB RAM,ZFS)上运行 Atlassian Confluence 时遇到了这个问题。罪魁祸首原来是 JRE 调出数据空间,因为不允许它使用足够的 RAM。这是一个非常奇怪的效果。一旦我将分配的内存分配给 Java VM,它就停止调出并吸收所有交换空间。它还提高了应用程序的响应速度。
目前还不完全清楚为什么它没有出现在pstat
和 的内存使用报告中top
,并且系统同时报告大量可用 RAM。
因此,如果您正在运行大型 Java 应用程序,请确保正确调整 JVM 以允许它使用所需的资源。