我们正在 AWS EC2 内构建在 Centos7 之上的 Jenkins 实例中构建或运行 Docker 容器。我们有 2 个带有 2 个 CPU 和 3.5 Gb 可用内存的 t2.medium 盒实例。
在一种情况下,我们正在另一个中构建容器,我们只是拉动它们并运行(不同的容器)。
我们开始出现错误
open /var/lib/docker/overlay/<sha>-init/merged/dev/console: cannot allocate memory
Run Code Online (Sandbox Code Playgroud)
在journalctl
我们得到
page allocation failure: order:4
Run Code Online (Sandbox Code Playgroud)
运行页面缓存转储可以暂时解决问题
echo 1 > /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)
所以我注意到在运行 docker 任务时,Dirty
内存块会出现峰值(应该如此)并Mapped
在它之后跳跃。然而,DirectMap4k
相对接近那个跳跃。
例如:
闲置机器
cat /proc/meminfo | grep -P "(Dirty|Mapped|DirectMap4k)"
Dirty: 104 kB
Mapped: 45696 kB
DirectMap4k: 100352 kB
Run Code Online (Sandbox Code Playgroud)
主动机
cat /proc/meminfo | grep -P "(Dirty|Mapped|DirectMap4k)"
Dirty: 72428 kB
Mapped: 70192 kB
DirectMap4k: …
Run Code Online (Sandbox Code Playgroud) 我想要做的是根据某些搜索查询查找所有文件并获取父目录 ( ../..
) 的完整路径。
例如find . -name "__openerp__.py"
,然后为每个文件执行一些沿着(cd ../..; pwd)
. 然后将所有内容通过管道传输到uniq
.