最近使用springboot开发了一个ip代理的程序,今天放到阿里云服务器上运行,多次出现应用运行突然停止的问题。
使用free -h 查看内存使用完全正常。重新运行监视CPU使用也正常。没有出现堆内存溢出,栈内存异常,内存异常等信息。
百思不得其解,然后就搜索了关键字springboot killed,在stack overflow上看到
之后,看了阿里云服务器的swap 空间,果然为0。最后使用以下命令添加了swap为物理内存的两倍。
1.dd if=/dev/zero of=/var/swap bs=1M count=2048 #swap分区为2G
2.mkswap /var/swap #建立swap的文件系统
3.启用交换分区文件:swapon /var/swap #启用swap文件
最后再重新运行springboot程序,就不会重新出现突然停止的情况了。
由此推断,springboot程序突然停止运行,是系统原因。应该是程序消耗内存的行为被系统监控到,系统中断了程序的运行,是什么行为不清楚,可能是开启的线程过多消耗太快太大了吧。。。