Утечка памяти OUT OF MEMORY

dvernoff

Добрая душа
Сообщения
638
Реакции
591
Утечка памяти
Рано или поздно, администратор своего сервера может столкнуться с крашем сервера, где в конце мы видим OUT OF MEMORY ********,
что означает ваша память протекает ;(
Недавно и я столкнулся с такой проблемой, к сожалению в интернете информации не много, но собрав её в одну кучу думаю кому-нибудь она
и поможет.

Утечка может встретиться:
В плагине (корявый код, как мой)
В карте (сложные карты по типу MiniGame)
На хостинге (косяки с OC)

Приступим к практике, покажу на примере MyArena,
в Мониторинге мы можем встретить использование ОЗУ
1590039230032.png

Норма занятой ОЗУ варьируется 300~1200, на данном примере,
если потребление ОЗУ подойдёт близко к числу 2048 будет краш.

1. Первым делом, проверяем не в карте ли дело?
Обычно утечки в картах: Мини-Игры, Тюрьма.

Это и была моя ошибка, я начинал с плагинов..., хотя и подумать не мог,
что на картах могут быть утечки, они могут быть в неправильных текстурах и не только.

Всё просто, смотрим на какой карте у нас поднимается ОЗУ, в идеале оно должно
стоять на месте, меняя числа в пределах ~1-5, но если ОЗУ у вас поднимается, всё выше и выше,
стоит запомнить карту которая щас стоит на сервере.

Проверим очень просто: меняем карту допустим на de_dust2, и тестим нагрузку стоим афк, или бегаем с игроками, если значение
стоит на месте, значит скорее всего утечка не в плагинах, а именно в картах.


2. Утечка в плагине
Самый противный разворот событий утечка в плагине, но иногда этот плагин можно поймать и за пару секунд,
будем пользоваться командой (в консоль) "sm_dump_handles addons/sourcemod/handles.txt"
Данная команда создаст дамп используемых хэндлов и покажет нагрузку, но опять не всегда.

Использовать эту команду желательно:

  • При полном старте
  • В пик по нагрузке

Чтобы в ручную не анализировать данный файл, воспользуемся сайтом помощником: ТЫК
1590039891329.png

На сайте мы можем парсить наш файл, он будет подсчитывать используемую память, и количество хэндлов.
Так же сайт записывает все наши файлы, для дальнейшей аналитики.
Вставляем два наших дампа, и смотрим разницу по нагрузке.
Какой плагин за такой период сильно поднялся в кол-во хэндлов. Допустим было значение 10, стало 1000.

В противном случае будем отключать плагины по одному, пока не найдём плагин с утечкой.


3. Хостинг
Есть вероятность что виноват хостинг, допустим ОЗУ поднимается до 1024 из 2048 и сервер крашится,
стоит написать в Поддержку.

(Кто может пополнить тему, жду ваших советов)
 
Последнее редактирование:

September

Участник
Сообщения
5,238
Реакции
2,742
  • Команда форума
  • #2
Про 3 пункт конечно чушь
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #3
Про 3 пункт конечно чушь
Не совсем. У меня на Арене такое было, я даже здесь на форуме об этом писал. Тогда выяснилось, что для моего игрового сервера (тогда слотовый тариф) система "неправильно ограничивала память" (если я правильно понял суть проблемы), и при попытке съесть больше гига - просто OOM (Out of memory). У меня даже тикет с ТП до сих пор сохранился.
1590053390722.png
 

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
Использовать эту команду желательно в пик нагрузки на ОЗУ!

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

Не совсем так. Эту команду стоит использовать, когда есть подозрение на протечку ОЗУ.
Единичный же дамп дает лишь инфу о текущем состоянии в данный момент времени, которую не с чем сравнивать (проще говоря, аномалия может быть не аномалией, пример: kgns с его weapons [не лучший пример, не суть.]).
Поэтому, для эффекта, стоит делать хотя бы два таких дампа через промежуток времени, к примеру:
  • Состояние при полном старте
  • Состояние через 6 часов после полного старта
Чем больше таких поинтов, тем больше смысла в ваших дампах.

По такому случаю будет эффективен плугин в связке с web графиком для демонстрации изменений за промежуток времени
 

dvernoff

Добрая душа
Сообщения
638
Реакции
591
Ходит легенда, что дампить нужно при старте сервера, чтоб наверняка....

Не совсем так. Эту команду стоит использовать, когда есть подозрение на протечку ОЗУ.
Единичный же дамп дает лишь инфу о текущем состоянии в данный момент времени, которую не с чем сравнивать (проще говоря, аномалия может быть не аномалией, пример: kgns с его weapons [не лучший пример, не суть.]).
Поэтому, для эффекта, стоит делать хотя бы два таких дампа через промежуток времени, к примеру:
  • Состояние при полном старте
  • Состояние через 6 часов после полного старта
Чем больше таких поинтов, тем больше смысла в ваших дампах.

По такому случаю будет эффективен плугин в связке с web графиком для демонстрации изменений за промежуток времени
Спасибо! Дополнил.
 

|Fatalist|

Участник
Сообщения
179
Реакции
10
Столкнулся с такой проблемой но у себя на клиенте.
Поменял уже 5 клиентов от разных сайтов и всё равно крашит клиент. При том что сам сервер продолжает стабильно работать и игроков с неё не выбрасывает.
А может некоторых и выбрасывает, не знаю
 

Synd1qate

Участник
Сообщения
744
Реакции
259
Столкнулся с такой проблемой но у себя на клиенте.
Поменял уже 5 клиентов от разных сайтов и всё равно крашит клиент. При том что сам сервер продолжает стабильно работать и игроков с неё не выбрасывает.
А может некоторых и выбрасывает, не знаю
Если у тебя кикает игроков, но сервер стоит, скорее всего дело не в утечке. Вероятно крашит из-за карты/моделей/текстур
 
Сверху Снизу