Spring Boot MVC+Thymeleaf应用部署VPS后运行一段时间崩溃求助
Spring Boot应用在Hostinger VPS运行一段时间后崩溃的常见原因及排查方向
一、资源类问题
- 内存不足:VPS配置过低,Spring Boot应用运行时占用内存超过服务器可用内存,系统会自动杀死Java进程。可通过
free -m查看服务器内存使用情况,启动应用时可添加JVM参数限制内存,比如java -Xmx512m -Xms256m -jar your-app.jar。 - CPU占用过高:应用存在死循环、频繁IO操作或大量并发请求,导致CPU耗尽,进程无响应被系统回收。用
top或htop命令查看进程CPU占用情况,排查代码中的性能瓶颈。 - 磁盘空间耗尽:应用日志持续写入未做切割,或生成的临时文件过多占满磁盘,导致应用无法写入数据而崩溃。执行
df -h查看磁盘使用率,配置日志切割(比如用Logback的滚动策略)。
二、进程管理问题
- 未配置后台运行:直接在终端启动应用,关闭终端后进程被终止。正确做法是用
nohup java -jar your-app.jar &启动,或配置systemd服务管理进程,确保应用后台稳定运行。 - 进程被系统OOM Killer杀死:系统内存不足时,Linux的OOM Killer会优先杀死占用内存高的进程,Spring Boot进程很可能成为目标。可查看系统日志
/var/log/messages或dmesg,搜索OOM关键字确认。
三、应用代码问题
- 资源泄漏:数据库连接、文件流、线程池等资源未正确关闭,长时间运行后导致资源耗尽。检查代码中的数据库操作是否用了try-with-resources,线程池是否合理配置。
- 未处理的异常:应用中存在未捕获的全局异常,导致线程崩溃进而引发整个应用崩溃。配置全局异常处理器,确保所有异常都能被捕获并处理。
- 定时/异步任务问题:定时任务逻辑存在无限循环、重复执行等问题导致资源占用过高,或异步任务堆积引发线程池耗尽。
四、Hostinger VPS相关限制
- VPS资源限制:部分低成本VPS有CPU/内存的突发限制,长时间高负载会触发限制,导致进程被暂停或杀死。查看Hostinger后台的资源监控数据,确认是否触发平台限制。
- 防火墙/网络问题:VPS防火墙规则变更,或网络中断导致应用无法访问外部资源(比如数据库),进而引发崩溃。检查防火墙配置和应用中的网络请求异常日志。
排查步骤建议
- 查看应用日志:Spring Boot默认日志在启动目录下的
logs文件夹或配置的日志路径,找出崩溃前的错误信息。 - 查看系统日志:检查
/var/log/syslog或dmesg,确认是否有系统级别的进程终止记录。 - 监控资源使用:用
top、free、df等命令持续观察服务器资源状态,定位是否是资源耗尽问题。 - 优化启动配置:添加JVM内存参数,配置后台运行服务,确保应用稳定启动。
内容的提问来源于stack exchange,提问作者Elkhan Ismayilov
相关产品推荐
相关产品推荐

