DB2 docker无法分配共享内存段

时间:2015-11-27 15:45:35

标签: linux docker db2

我正在尝试使用DB2数据库设置docker镜像。 安装完成没有任何问题,但是当我尝试重新启动数据库时出现以下错误:

  

SQL1084C无法分配共享内存段。 SQLSTATE = 57019

我将Dockerfile基于这个: https://github.com/jeffbonhag/db2-docker 他声明应该通过添加命令来解决同样的问题

sysctl kernel.shmmax=18446744073692774399

允许内核分配更多内存,但错误仍然存​​在。

docker守护程序本身在Ubuntu 14.04中运行,它在MacOSX上的Parallels内运行。

编辑:经过一些搜索后,我发现这与以下命令有关:

UPDATE DB CFG FOR S0MXAT01 USING locklist 100000;

2 个答案:

答案 0 :(得分:1)

您正在过度分配数据库内存堆,即docker无法满足内存要求。看看following link to the manuals。这将为您提供数据库内存中的内容细分:

$string = str_replace("\r\n[li]", "[li]", $string);
$string = str_replace("[/li]\r\n", "[/li]", $string);

你可以摆弄(减少)任何这些堆,直到码头工人满意为止。

答案 1 :(得分:0)

如果其他人遇到这种情况 - 如果您正在滚动自己的容器并将内存设置为自动,它可能会尝试将主机上的所有内存分配给 Db2,从而导致此错误。有时,最初的开始效果还不错,但在接下来的数周或数月内,您会遇到奇怪的崩溃。

“官方”db2 容器(开发者社区版本一)处理这个问题。如果您正在构建自己的容器,则可能需要根据容器的大小将 DATABASE_MEMORY 和/或 INSTANCE_MEMORY 设置为合理的限制,并在容器中重新启动 Db2。这可以在您的入口点脚本中完成。