Как установить предел памяти для OOM Killer для chrome? - PullRequest
4 голосов
/ 13 января 2020

chrome вызвал oom-killer: gfp_mask = 0xd0, order = 0, oom_score_adj = 300

Я получаю вышеуказанную ошибку при тестировании безголовым chrome браузером + Селен.

1 Ответ

2 голосов
/ 15 января 2020

Это сообщение об ошибке ...

chrome invoked oom-killer: gfp_mask=0xd0, order=0, oom_score_adj=300

... означает, что ChromeDriver контролируется Контекст просмотра т.е. Chrome Браузер вызвал OOM Killer из-за ошибки .


Out of Memory

Out of Memory Сообщения об ошибках могут появляться, когда вы пытаетесь запустить новые программы или пытаетесь использовать программы, которые уже запущены, даже если у вас все еще достаточно физической памяти и файлов подкачки.


OOM Killer

OOM Killer или Out of Memory Killer - это процесс, который используется ядром linux, когда в системе критически мало памяти. Эта ситуация возникает из-за того, что ядро ​​linux имеет избыточную память для своих процессов. Когда процесс запускается, он запрашивает блок памяти у ядра. Этот начальный запрос обычно является большим запросом, который процесс не будет использовать сразу или вообще никогда. Ядро, осознавая эту тенденцию процессов запрашивать избыточную память, перераспределяет системную память. Это означает, что когда система имеет, например, 2 ГБ ОЗУ, ядро ​​может выделить 2,5 ГБ для процессов. Это максимизирует использование системной памяти, обеспечивая активное использование памяти, выделенной для процессов. Теперь, если достаточное количество процессов начнет использовать все свои запрошенные блоки памяти, физической памяти не хватит для их поддержки. Это означает, что запущенные процессы требуют больше памяти, чем физически доступно. Именно в такой ситуации ядро ​​linux вызывает OOM Killer для проверки всех запущенных процессов и уничтожения одного или нескольких из них, чтобы освободить системную память и сохранить работу системы.


Chrome первая жертва OOM Killer

Удивительно, но Chrome Browser Client является первой жертвой убийцы Oom. Поскольку Linux OOM Killer убивает процесс с помощью highest score=(RSS + oom_score_adj), вкладки chrome уничтожаются, потому что они имеют oom_score_adj из 300 (kLowestRendererOomScore = 300 в chrome_constants. cc) следующим образом:

#if defined(OS_LINUX)
const int kLowestRendererOomScore = 300;
const int kHighestRendererOomScore = 1000;
#endif  

Подробности

Эта проблема известна и может быть легко воспроизведена . Мы обсуждали эту проблему в длину и в ширину, если oom_score_adj слишком высоко - chrome всегда является первой жертвой убийцы ов . Цель состояла в том, чтобы настроить OOM в ОС Chrome, чтобы убедиться, что самая последняя открытая вкладка не уничтожена, так как казалось, что OOM killer предпочитает недавние процессы по умолчанию. Но на Linux дистрибутивах, которые не будут отражаться, и вы получите нежелательное поведение, когда Chrome проки будут убиты по сравнению с другими проками, которые, вероятно, должны были быть убиты.


Решение

Некоторые подробные сведения о трассировке стека ошибок помогли бы нам предложить вам некоторые изменения с точки зрения:

  • total-vm use
  • Физическая память
  • Обмен память

Вы можете найти пару соответствующих обсуждений в:

Тем не менее, был проведен обзор кода для решения этой проблемы, но обсуждение все еще остается в статусе Назначено с Приоритет: 2 with in:


tl; dr

java .lang.OutOfMemoryError: невозможно создать новую ошибку собственного потока, используя ChromeDriver и Chrome через Selenium в Spring, загрузка


Outro

Chromium OS - Проектная документация - Обработка нехватки памяти

...