[support-service.service文件地址](https://github.com/183461750/doc-record/blob/main/docs/lang/java/systemctl%E7%AE%A1%E7%90%86Java%E8%BF%9B%E7%A8%8B/support-service.service)

[相关OOM问题分析](https://github.com/183461750/doc-record/blob/main/materiel/ai/java/systemctl%E7%AE%A1%E7%90%86Java%E8%BF%9B%E7%A8%8B%E6%97%A0%E9%99%90%E9%87%8D%E5%90%AF%E9%97%AE%E9%A2%98.md)

## 结合之前给你的systemctl配置, 以及后面的OOM问题, 帮忙提供一份生产级更优的Java应用systemctl配置(AI提供)

以下是针对Java应用优化后的生产级systemd配置，重点解决OOM问题、增强稳定性和可观测性，并遵循生产环境最佳实践：

### 关键优化点说明（针对OOM和生产稳定性）：

1. **OOM问题专项解决**
   - 新增`HeapDumpOnOutOfMemoryError`和`HeapDumpPath`：OOM时自动生成堆转储文件，用于事后分析内存泄漏
   - 新增`ExitOnOutOfMemoryError`：OOM时主动退出，避免僵尸进程
   - 分离`MemoryHigh`和`MemoryLimit`：系统会在内存接近`MemoryHigh`时主动回收，超过`MemoryLimit`才会OOM杀死
   - 建议`Xmx`设置为`MemoryLimit`的80%（例如`MemoryLimit=2G`对应`Xmx=1600M`），预留系统内存

2. **稳定性增强**
   - 增加重启频率限制（`StartLimitInterval`+`StartLimitBurst`）：避免OOM后短时间内无限重启导致系统资源耗尽
   - 完善依赖管理：明确依赖网络、日志和数据库服务
   - 增加`ExecReload`：支持平滑重载配置，减少重启次数
   - 延长超时时间：确保复杂场景下有足够时间启动和停止

3. **可观测性提升**
   - 单独配置日志文件路径：便于日志聚合和分析
   - 生成PID文件：方便监控系统识别进程
   - 记录核心转储：用于深度故障排查
   - 统一日志标识：便于从journald中筛选服务日志

4. **安全加固**
   - 启用目录隔离和权限控制：减少攻击面
   - 限制进程权限：防止权限提升风险

### 使用建议：
1. 首次部署后执行`systemctl daemon-reload`刷新配置
2. 定期检查`/var/log/support-service`目录下的堆转储文件和日志
3. 根据应用实际内存使用情况调整`MemoryLimit`、`Xms`和`Xmx`（通过监控工具如Prometheus+Grafana观测）
4. 结合`logrotate`配置日志轮转，避免日志文件过大

通过这些优化，既能有效减少OOM导致的服务中断，又能在发生问题时提供足够的诊断信息，同时增强服务在生产环境的稳定性和安全性。