Tomcat 和 Matlab 编译器运行时内存不足错误
Tomcat and Matlab Compiler Runtime Out of Memory Error
我在 Ubuntu 14.04 服务器上安装了 Tomcat 7 和 MCR 8.3。
当服务器收到的连接很少时我没有问题,但是当它们太多时,我会出现内存不足错误。
JVM 参数是:
-Djava.util.logging.config.file=/var/lib/tomcat7/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dfile.encoding=UTF-8 -Xms128m -Xmx4096m -XX:PermSize=256m -XX:MaxPermSize=1024m -Djava.endorsed.dirs=/usr/share/tomcat7/endorsed -Dcatalina.base=/var/lib/tomcat7 -Dcatalina.home=/usr/share/tomcat7 -Djava.io.tmpdir=/tmp/tomcat7-tomcat7-tmp
日志中的错误是:
Out of Memory Error (os_linux.cpp:2756), pid=27165, tid=140664871548672
堆空闲
Heap
PSYoungGen total 1289728K, used 672681K [0x00000007aaa80000, 0x00000007fde00000, 0x0000000800000000)
eden space 1288704K, 52% used [0x00000007aaa80000,0x00000007d3b6a578,0x00000007f9500000)
from space 1024K, 0% used [0x00000007f9500000,0x00000007f9500000,0x00000007f9600000)
to space 37376K, 0% used [0x00000007fb980000,0x00000007fb980000,0x00000007fde00000)
ParOldGen total 128000K, used 64279K [0x0000000700000000, 0x0000000707d00000, 0x00000007aaa80000)
object space 128000K, 50% used [0x0000000700000000,0x0000000703ec5d98,0x0000000707d00000)
PSPermGen total 262144K, used 45159K [0x00000006c0000000, 0x00000006d0000000, 0x0000000700000000)
object space 262144K, 17% used [0x00000006c0000000,0x00000006c2c19fc8,0x00000006d0000000)
而且系统内存也是空闲的:
Memory: 4k page, physical 32904520k(26875548k free), swap 999420k(999420k free)
可能是什么?
这是我的 setenv.sh 文件中的行:
export JAVA_OPTS="-Dfile.encoding=UTF-8 -server -d64 -Xms128m -Xmx8192m -XX:PermSize=256m -XX:MaxPermSize=2048m"
终于找到问题了。这不是配置问题。我没有从 matlab 函数中释放内存。真丢脸...
我在 Ubuntu 14.04 服务器上安装了 Tomcat 7 和 MCR 8.3。 当服务器收到的连接很少时我没有问题,但是当它们太多时,我会出现内存不足错误。 JVM 参数是:
-Djava.util.logging.config.file=/var/lib/tomcat7/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dfile.encoding=UTF-8 -Xms128m -Xmx4096m -XX:PermSize=256m -XX:MaxPermSize=1024m -Djava.endorsed.dirs=/usr/share/tomcat7/endorsed -Dcatalina.base=/var/lib/tomcat7 -Dcatalina.home=/usr/share/tomcat7 -Djava.io.tmpdir=/tmp/tomcat7-tomcat7-tmp
日志中的错误是:
Out of Memory Error (os_linux.cpp:2756), pid=27165, tid=140664871548672
堆空闲
Heap
PSYoungGen total 1289728K, used 672681K [0x00000007aaa80000, 0x00000007fde00000, 0x0000000800000000)
eden space 1288704K, 52% used [0x00000007aaa80000,0x00000007d3b6a578,0x00000007f9500000)
from space 1024K, 0% used [0x00000007f9500000,0x00000007f9500000,0x00000007f9600000)
to space 37376K, 0% used [0x00000007fb980000,0x00000007fb980000,0x00000007fde00000)
ParOldGen total 128000K, used 64279K [0x0000000700000000, 0x0000000707d00000, 0x00000007aaa80000)
object space 128000K, 50% used [0x0000000700000000,0x0000000703ec5d98,0x0000000707d00000)
PSPermGen total 262144K, used 45159K [0x00000006c0000000, 0x00000006d0000000, 0x0000000700000000)
object space 262144K, 17% used [0x00000006c0000000,0x00000006c2c19fc8,0x00000006d0000000)
而且系统内存也是空闲的:
Memory: 4k page, physical 32904520k(26875548k free), swap 999420k(999420k free)
可能是什么?
这是我的 setenv.sh 文件中的行:
export JAVA_OPTS="-Dfile.encoding=UTF-8 -server -d64 -Xms128m -Xmx8192m -XX:PermSize=256m -XX:MaxPermSize=2048m"
终于找到问题了。这不是配置问题。我没有从 matlab 函数中释放内存。真丢脸...