Экземпляр AWS EC2 не может использовать память для запуска приложения NodeJs, не удается определить основную причину из-за подавления журнала

Экземпляр AWS EC2 не может использовать память для запуска приложения NodeJs, не удается определить основную причину из-за подавления журнала

Как указано в заголовке, у нас есть приложение NodeJS, работающее на экземпляре EC2 в AWS, в котором время от времени заканчивается память и процесс завершается.

С точки зрения бизнеса это не помеха, поскольку избыточные системы обеспечивают запуск другого экземпляра и его доступность через балансировщик нагрузки. Но мы все равно хотели бы выяснить, что именно заставляет экземпляр исчерпывать память, чтобы мы могли полностью предотвратить это.

Мы просмотрели журналы, связанные с завершением процесса, чтобы попытаться выяснить, что происходит, но из-за отсутствия доступной памяти, похоже, что ОС не может записывать какие-либо журналы в это время. После завершения процесса она регистрирует, что подавила ряд журналов, а затем продолжает работать как обычно. Поэтому мы предполагаем, что подавление журналов не позволяет нам получить больше информации о фактической причине проблемы.

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

Есть идеи, как можно выяснить, что именно заставляет процесс исчерпывать память?

решение1

и убивает процесс.

Theпервыйто, что вам нужно сделать, это остановить исчерпание памяти. Уменьшите перерасход на хосте.

Добавьте новый файл в /etc/sysctl.d, содержащий (изначально):

vm.overcommit_memory = 2
vm.overcommit_ratio = 15

Затем запустите sudo sysctl -p (позже вы, возможно, захотите изменить соотношение).

Затем вы можете начать искать то, что потребляет много памяти.

Связанный контент