Akka Actor Memory Leak или управление
Есть ли у вас какой-либо опыт с управлением / утечкой памяти akka actor? Здесь у меня есть модуль, использующий akka actor для взаимодействия с другими модулями, но со временем один из модулей вышел из строя из-за размера кучи памяти.
Нужно ли отправлять отравленную таблетку детскому актеру после ее окончания? Потому что каждый запрос, я хотел бы сделать другого актера, каждый запрос. Нужно ли снова отправлять таблетки отравы детям-актерам, если у них есть свои дети-актеры?
PS: я использую Scala Akka
Спасибо
2 ответа
Да, каждый актер, которого вы создаете, должен быть явно остановлен. Обычно это делается по телефону context.stop(self)
изнутри актера (если он может определить, что он завершил свою задачу) или если супервизор остановил его, используя context.stop(child)
,
Чтобы предотвратить нехватку памяти, вы можете использовать ограниченную очередь сообщений или почтовый ящик получателя: http://doc.akka.io/docs/akka/snapshot/scala/mailboxes.html.
Чтобы выбрать способ управления дочерними акторами (перезапустить, убить и т. Д.), Используйте стратегию супервизора: http://doc.akka.io/docs/akka/snapshot/general/supervision.html. Стратегия супервизора может быть выбрана на любом уровне / родительском уровне.