2

У нас есть сервер приложений, который по прежним причинам все еще работает на 32-битном ядре с PAE (Ubuntu 12.04 LTS). Сервер имеет 24 ГБ ОЗУ, как видно из вывода free:

$> free -lmt
             total       used       free     shared    buffers     cached
Mem:         24256      19468       4788          0          0       2382
Low:           189        146         42
High:        24067      19321       4745
-/+ buffers/cache:      17085       7170
Swap:        19956         47      19908
Total:       44212      19515      24697

Однако, как только реальное использование памяти превышает примерно 16 ГБ, процессы убиваются OOM-убийцей (в частности, Google Chrome), и некоторые выделения памяти из Java также имеют тенденцию к сбою. Я уже установил

vm.overcommit_memory = 1

через sysctl , но, похоже, это не помогает. Вот выдержка из dmesg, которая показывает выходные данные после одного из OOM.

1 ответ1

3

Быстрый поиск в Google для oom killer premature видимому, предполагает, что есть несколько причин, по которым OOM killer может быть вызван, даже если в системе достаточно видимой памяти / подкачки.

Одним из возможных объяснений является фрагментация памяти, в частности:

Normal: 2386*4kB 2580*8kB 197*16kB 6*32kB 4*64kB 0*128kB 1*256kB 1*512kB 1*1024kB 0*2048kB 0*4096kB = 35576kB

Предполагает, что не так много обычных больших страниц.

Боюсь, это не полный ответ на ваш вопрос, но он может указать вам одно из возможных направлений расследования.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .