应用程序使用wrapper包装之后导致内存溢出,直至应用程序崩溃。
现象:
java应用程序在运行一段时间后把服务器内存耗光,程序死掉,但是守护进程wrapper还活着。虽然java应用程序死了,但是内存还没有被释放,其实实际耗内存的是wrapper,把wrapper的进程kill掉之后服务器的内存马上被释放18G了。
分析:
在网上查了好多都没有找到类似的情况,最终分析可能是输入的日志太多了导致内存耗尽,修改wrapper配置文件wrapper.conf中的一下日志级,wrapper.logfile.loglevel=error,默认配置是info,使用info级别输出日志,默认java应用程序中的info级别的日志也会输出到里面,导致日志过多,会一直消耗服务器的内存,最终导致程序崩溃,使用error日志级别之后就不会打印wrapper的日志文件了。