我在docker中运行一个spring启动项目,我正在执行以下JDBC代码:
SqlRowset rowset = jdbcTemplate.queryForRowSet(queryString);
查询字符串如下:
SELECT *
FROM tableName
WHERE timestamp >= '2022-04-03 01:00:00.000000 -0700'
AND timestamp <= '2022-04-13 01:59:59.999999 -0700'
ORDER BY timestamp
LIMIT 2500
OFFSET 0
通过JDBC执行此查询时,docker容器死亡并删除。我有其他的查询工作得很好,但由于某种原因,这个包含日期的查询杀死了docker机器。有人知道为什么会发生这种事吗?
在docker容器中吐出的最后一个日志是:
2022-06-20 19:56:00,985 DEBUG org.springframework.jdbc.core.JdbcTemplate :
Executing SQL query
[SELECT * FROM tableName WHERE timestamp >= '2022-04-03 01:00:00.000000 -0300' AND timestamp <= '2022-04-13 01:59:59.999999 -0300' ORDER BY timestamp LIMIT 2500 OFFSET 0]
我明白是怎么回事了。在我的环境文件中没有为Docker容器分配足够的内存。
我遵循了@eol提供的链接中的指示:
您可以尝试更改入口点以保持容器在spring应用程序崩溃后仍在运行。你应该能够看到到底发生了什么。Keep Your Docker Container Running for Debugging
当Docker容器失败时,我删除了我们的标签。
我SSH到容器并做了一些调查。我在状态"OOMKilled": "true"
中发现内存不足错误。这使我得出结论,内存没有分配到我们需要的大小。