Как ArangoDB определяет объем доступной оперативной памяти? - PullRequest
0 голосов
/ 23 октября 2019

Мы запускаем ArangoDB в док-контейнере CoreOS на экземпляре AWS.

Этот экземпляр имеет около 1 гигабайта памяти.

Однако, когда мы загружаем интерфейс ArangoDB, it думает itдоступно 2 гигабайта оперативной памяти! ArangoDB thinks it has 2 gigs of memory available

Очевидно, что на самом деле не имеет этой памяти доступной, и, следовательно, происходит сбой 10 раз в день, как только порог памяти пересекает даженемного больше, чем 1 гигабайт, который у нас есть на моем боксе.

Как ArangoDB определяет, что у него есть X доступного объема памяти? И где можно изменить этот параметр?

1 Ответ

0 голосов
/ 28 октября 2019

Пожалуйста, сделайте docker inspect для этого контейнера. В объекте HostConfig будет запись Memory. Вероятно, он будет читать "Memory": 1073741824, а "OomKillDisable": false.

Действительно, Memory: something ограничивает размер резидента процесса в контейнере. Если это превзойдено (и обмен не возможен), процесс сбрасывается примерно так:

"State": {
  ...
  "OOMKilled": true,
  ...
}

arangod, поскольку процесс не может видеть ограничение памяти контейнеров докера. Мы видим хосты, которые могут быть выше, как в вашем случае. Единственный вариант - повысить ограничение на контейнер или ограничить использование памяти arangod с помощью параметров командной строки.

...