如何增加 AWS ECS fargate 中的 vm.max_map_count?

Kar*_*yan 5 amazon-web-services amazon-ecs elasticsearch sonarqube aws-fargate

我正在尝试在 AWS fargate 平台上运行 sonarqube 应用程序。当我运行原始 docker 图像时,它就像一个魅力。但是如果我将 JDBC 属性作为参数传递给容器,我将面临以下问题。显然,弹性搜索需要一个新的配置。如果是 ECS 集群,我会将 ssh 连接到 EC2 实例并更新这些属性。在 fargate 的情况下,我如何实现这一目标?

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

Adi*_*iii 7

从 github 问题来看似乎不可能,因为 Fargate 中没有 EC2 实例或 Host ivolvole。

max_map_count错误的解决方法似乎是max_memory_map直接在主机上设置(这可能会导致不良副作用,或者在 docker run 命令上使用 sysctl 标志。不幸的是,Fargate 不支持这两个选项,因为它涉及与容器实例本身。

但另一种方法是增加file limit和禁用mmap 检查。

I had to properly configure U limits on my ECS task definition, something like:
"ulimits": [
  {
    "name": "nofile",
    "softLimit": 65535,
    "hardLimit": 65535
  }
]
Run Code Online (Sandbox Code Playgroud)

我在 ElasticSearch 中禁用了 mmap,它摆脱了max_map_count设置要求。这可以通过配置sonar.search.javaAdditionalOpts SonarQube设置来完成。我无法使用环境变量来执行此操作,因为 ECS 似乎正在吞噬它们,但最后我只是将它作为参数传递给容器,由于设置了入口点并正确使用参数,因此它可以工作。就我而言:

"command": [
  "-Dsonar.search.javaAdditionalOpts=-Dnode.store.allow_mmapfs=false"
]
Run Code Online (Sandbox Code Playgroud)

sonarqube 禁用 nmap

  • 谢谢你拯救了我的周末;-) (3认同)
  • 一直在用头撞键盘,谢谢! (2认同)