我的Hudson作业在每次运行时都会出现此错误:
Caused by: java.io.IOException: error=12, Not enough space
at java.lang.UNIXProcess.forkAndExec(Native Method)
我在StackOverflow和Jenkins网站上找到了关于此错误的文档,这表明存在交换空间问题(https://wiki.jenkins-ci.org/display/JENKINS/IOException+Not+enough+space)。
然而,也许我的问题不同或不同,但如果我手动启动该过程它可以正常工作。 奇怪的是我从prstat的顶部看到了不同的结果:
规格:
记忆:
从顶部开始:
32G phys mem, 6255M free mem, 16G total swap, 16G free swap
NPROC USERNAME SWAP RSS MEMORY TIME CPU
50 user1 12G 12G 39% 89:02:31 0.3%
36 user2 11G 6779M 21% 155:17:41 0.0%
26 user3 10G 8509M 26% 4787:37:4 8.0%
6 hudson 572M 556M 1.7% 0:08:25 0.0%
57 root 280M 285M 0.9% 138:46:05 0.0%
是否可以确认我是否有掉期问题? top显示16GB免费...
编辑: swap -s的结果(在问题被重新解决之后)
total: 19940168k bytes allocated + 12578048k reserved = 32518216k used, 4118208k available
答案 0 :(得分:1)
这当然是一个交换问题。
top
报告为不包含分页数据的空闲交换块。然而,即使在未使用时,也可以保留这些块中的一些(即,仍未分配的虚拟存储器)。当你没有更多的块来支持内存预留时,你会得到这个“空间不足”的例外。
swap -s
显示您的应用程序预留的容量超过12 GB,而交换区域仅为16 GB。我会将交换大小加倍,以防止虚拟内存短缺。