dvernoff
Добрая душа
- Сообщения
- 638
- Реакции
- 591
Утечка памяти
Рано или поздно, администратор своего сервера может столкнуться с крашем сервера, где в конце мы видим OUT OF MEMORY ********,
что означает ваша память протекает ;(
Недавно и я столкнулся с такой проблемой, к сожалению в интернете информации не много, но собрав её в одну кучу думаю кому-нибудь она
и поможет.
Утечка может встретиться:
В плагине (корявый код, как мой)
В карте (сложные карты по типу MiniGame)
На хостинге (косяки с OC)
Приступим к практике, покажу на примере MyArena,
в Мониторинге мы можем встретить использование ОЗУ
Норма занятой ОЗУ варьируется 300~1200, на данном примере,
если потребление ОЗУ подойдёт близко к числу 2048 будет краш.
1. Первым делом, проверяем не в карте ли дело?
Обычно утечки в картах: Мини-Игры, Тюрьма.
Это и была моя ошибка, я начинал с плагинов..., хотя и подумать не мог,
что на картах могут быть утечки, они могут быть в неправильных текстурах и не только.
Всё просто, смотрим на какой карте у нас поднимается ОЗУ, в идеале оно должно
стоять на месте, меняя числа в пределах ~1-5, но если ОЗУ у вас поднимается, всё выше и выше,
стоит запомнить карту которая щас стоит на сервере.
Проверим очень просто: меняем карту допустим на de_dust2, и тестим нагрузку стоим афк, или бегаем с игроками, если значение
стоит на месте, значит скорее всего утечка не в плагинах, а именно в картах.
2. Утечка в плагине
Самый противный разворот событий утечка в плагине, но иногда этот плагин можно поймать и за пару секунд,
будем пользоваться командой (в консоль) "sm_dump_handles addons/sourcemod/handles.txt"
Данная команда создаст дамп используемых хэндлов и покажет нагрузку, но опять не всегда.
Использовать эту команду желательно:
Чтобы в ручную не анализировать данный файл, воспользуемся сайтом помощником: ТЫК
На сайте мы можем парсить наш файл, он будет подсчитывать используемую память, и количество хэндлов.
Так же сайт записывает все наши файлы, для дальнейшей аналитики.
Вставляем два наших дампа, и смотрим разницу по нагрузке.
Какой плагин за такой период сильно поднялся в кол-во хэндлов. Допустим было значение 10, стало 1000.
В противном случае будем отключать плагины по одному, пока не найдём плагин с утечкой.
3. Хостинг
Есть вероятность что виноват хостинг, допустим ОЗУ поднимается до 1024 из 2048 и сервер крашится,
стоит написать в Поддержку.
(Кто может пополнить тему, жду ваших советов)
Рано или поздно, администратор своего сервера может столкнуться с крашем сервера, где в конце мы видим OUT OF MEMORY ********,
что означает ваша память протекает ;(
Недавно и я столкнулся с такой проблемой, к сожалению в интернете информации не много, но собрав её в одну кучу думаю кому-нибудь она
и поможет.
Утечка может встретиться:
В плагине (корявый код, как мой)
В карте (сложные карты по типу MiniGame)
На хостинге (косяки с OC)
Приступим к практике, покажу на примере MyArena,
в Мониторинге мы можем встретить использование ОЗУ
Норма занятой ОЗУ варьируется 300~1200, на данном примере,
если потребление ОЗУ подойдёт близко к числу 2048 будет краш.
1. Первым делом, проверяем не в карте ли дело?
Обычно утечки в картах: Мини-Игры, Тюрьма.
Это и была моя ошибка, я начинал с плагинов..., хотя и подумать не мог,
что на картах могут быть утечки, они могут быть в неправильных текстурах и не только.
Всё просто, смотрим на какой карте у нас поднимается ОЗУ, в идеале оно должно
стоять на месте, меняя числа в пределах ~1-5, но если ОЗУ у вас поднимается, всё выше и выше,
стоит запомнить карту которая щас стоит на сервере.
Проверим очень просто: меняем карту допустим на de_dust2, и тестим нагрузку стоим афк, или бегаем с игроками, если значение
стоит на месте, значит скорее всего утечка не в плагинах, а именно в картах.
2. Утечка в плагине
Самый противный разворот событий утечка в плагине, но иногда этот плагин можно поймать и за пару секунд,
будем пользоваться командой (в консоль) "sm_dump_handles addons/sourcemod/handles.txt"
Данная команда создаст дамп используемых хэндлов и покажет нагрузку, но опять не всегда.
Использовать эту команду желательно:
- При полном старте
- В пик по нагрузке
Чтобы в ручную не анализировать данный файл, воспользуемся сайтом помощником: ТЫК
На сайте мы можем парсить наш файл, он будет подсчитывать используемую память, и количество хэндлов.
Так же сайт записывает все наши файлы, для дальнейшей аналитики.
Вставляем два наших дампа, и смотрим разницу по нагрузке.
Какой плагин за такой период сильно поднялся в кол-во хэндлов. Допустим было значение 10, стало 1000.
В противном случае будем отключать плагины по одному, пока не найдём плагин с утечкой.
3. Хостинг
Есть вероятность что виноват хостинг, допустим ОЗУ поднимается до 1024 из 2048 и сервер крашится,
стоит написать в Поддержку.
(Кто может пополнить тему, жду ваших советов)
Последнее редактирование: