我从Azure团队发现,可以通过指定edgeHub
来控制包括createOptions -> HostConfig -> Memory
的Edge模块的内存限制。如何控制edgeAgent
创建的edgeAgent
Docker容器的内存限制?有记录吗?当前在2GB VM上显示为1.88GB。
以下是docker stats
fd66aaa4dbe1 edgeAgent 0.01% 40.59MiB / 1.885GiB 2.10% 2.18MB / 1.13MB 55.6MB / 705kB 15
答案 0 :(得分:1)
设置内存限制并非特定于edgeHub模块,但与IotEdge一起使用的任何其他docker模块相同。您可以在任何模块的createOptions中将Memory设置添加到HostConfig部分。
对于edgeAgent,部署设置如下所示:
"systemModules": {
"edgeAgent": {
"type": "docker",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-agent:1.0",
"createOptions": "{\"HostConfig\":{\"Memory\":536870912}}"
}
},
"edgeHub": {
...
}
}
以此进行新的部署。
要使更改对您的计算机生效,您必须删除edgeAgent模块,以便它根据更改后的部署规则创建一个新模块。 您可以使用以下命令进行操作:
sudo docker rmi mcr.microsoft.com/azureiotedge-agent:1.0 -f
之后,使用以下方法重新启动iotEdge Deamon
sudo systemctl重新启动iotedge
之后,将限制edgeAgent模块的内存。
注意: 如果要限制Raspberry Pi上的内存,请注意默认情况下已关闭内存限制支持。您可以在此处找到如何启用它的方法:https://blog.raveland.org/post/docker_raspian/