Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Информационная доска

Данный раздел предназначен для обсуждения, а также решения технических проблем связанных с серверной частью. Обсуждения касательно игровых клиентов ведутся здесь.

1. Во время создания новой темы аккуратно оформляйте её, не допускайте грамматических ошибок.
2. Описывая проблему старайтесь, как можно больше рассказать о ней, а так же о действиях с сервером после которых она возникла, по возможности подкрепите информацию логами.
3. Если вопрос касается проблемы в работе сервера, то обязательно прикрепляйте список плагинов (введите в консоли сервера: meta list и amxx plugins), настройки server.cfg, логи. Так же указывайте операционную систему, версию HLDS (введите к консоли сервера: version) и где хостится сервер.

Длинную информацию скрывайте под спойлер.

Утечки памяти в HLDS

Статус пользователя Metal Messiah
сообщение 4.8.2012, 2:24
Сообщение #1


Иконка группы

Стаж: 13 лет

Сообщений: 2458
Благодарностей: 1482
Полезность: 772

HostGame.cf
Интересует кто с этим сталкивался и как решали эту проблему.

hlds_i686 запущен на Linux.
В нормальном режиме сервер жрет порядка 67-90 Мб ОЗУ.
В ненормальном режиме цифра доходит до 160 и даже до 230 Мб. Все бы было хорошо если бы это было прямо пропорцитнально онлайну и когда онлайн падал после смены карты объем возвращался на место. Но нет.
Если сервер вылетает несколько раз в сутки и перезапускается скриптом то все отлично, не зашкаливает. Если же сутки-двое работает без вылетов то сжирает всю свободную память вместе с подкачкой, в результате к серверу нельзя подключиться по SSH. В конце концов это приводит к ошибке и перезапуску hlds с вновь нормальным расходом памяти.

Собсно вопрос: где утечка памяти - в самом HLDS или в AMXMOD? Почему после смены карты память не освобождается? Все же плагины инициализируются заново значит должны выгружаться...

Как заставить сервер есть меньше памяти или какие есть решения по принудительному перезапуску бинарника в случае превышения лимитов памяти? Особенно полезно среди ночи когда игроков нет перегружать игровые сервера.

Отредактировал: Metal Messiah, - 4.8.2012, 2:24


Полезные публикации - ссылки у меня в профиле. Ссылка на плагин против спама на сервере StopServerSpam там же.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя 330863
сообщение 4.8.2012, 8:41
Сообщение #2


Стаж: 16 лет

Сообщений: 4358
Благодарностей: 1079
Полезность: 497

Metal Messiah,
плагины у вас криворукие, а не утечки в hlds или amxmodx
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Metal Messiah
сообщение 4.8.2012, 11:03
Сообщение #3


Иконка группы

Стаж: 13 лет

Сообщений: 2458
Благодарностей: 1482
Полезность: 772

HostGame.cf
Блин. Я ж сказал плагины загружаются и выгружаются при смене карты, память ДОЛЖНА освобождаться под начальные 80Мб. А если не освобождается значит это проблемы загрузчика плагинов, т.е. AMXMOD

причем у меня 2 сервера - классик с минимумом плагинов и паблик с дофигищей плагинов. Паблик вылетает чаще (т.е. восстанавливается) а классик жрет намного больше памяти


Полезные публикации - ссылки у меня в профиле. Ссылка на плагин против спама на сервере StopServerSpam там же.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Grape Fruit
сообщение 4.8.2012, 11:46
Сообщение #4


Стаж: 16 лет

Сообщений: 505
Благодарностей: 286
Полезность: 802

Сделайте ежедневный ребут по крону и не будет такой проблемы.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя нуб2
сообщение 4.8.2012, 12:47
Сообщение #5


Стаж: 14 лет

Сообщений: 2367
Благодарностей: 1209
Полезность: 1014

Кривые плагины, амхх и хлдс не утекают никуда.
Утечка памяти это когда сервак 16гигов забрал, 100 м лишних это могут быть логи, статистика, все что угодно.

Ну от этого сервер никак не падает)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 330863
сообщение 4.8.2012, 14:31
Сообщение #6


Стаж: 16 лет

Сообщений: 4358
Благодарностей: 1079
Полезность: 497

Metal Messiah,
сервер грузит файлы игровые в озу и использует их, но просто так не растёт потребление после каждой карты, как я говорил плагины кривые...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Metal Messiah
сообщение 6.8.2012, 2:27
Сообщение #7


Иконка группы

Стаж: 13 лет

Сообщений: 2458
Благодарностей: 1482
Полезность: 772

HostGame.cf
> Ну от этого сервер никак не падает)
падает если память вся выжрана вместе со свопом. segmentation fault гарантирован после нескольких минут тормозов

> Сделайте ежедневный ребут по крону
о, идея. точнее плагин который получает время жизни сервера из stats и если оно зашкаливает то перекидывает игроков на другой сервер и посылает quit в консоль. сервер рестартует скриптом автоматически.

> Утечка памяти это когда сервак 16гигов забрал
хотелось бы такое увидеть если на серваке всего гигабайт стоит

блин, я сам программист и немного разбираюсь в разработке приложений с поддержкой плагинов и самих плагинов. если плагин подгружается динамически (допустим при старте сервера и смене карты) то он должен выгружаться по окончании mp_timelimit и вся память должна освобождаться. По крайней мере так положено. И отвечать за это должно само приложение, а не плагины. В данном случае amxmod.

Хорошо, допустим это плагины кривые.
Тогда берем 260 Мб в конце периода минус 80 Мб при запуске сервера это 180Мб которые набегают примерно за сутки. таймлимит стоит час, т.е. делим это на 24 часа или 24 карты в сутки и получаем 7.5 мб за раз. Найдите мне плагин который хранит в памяти столько данных (этопри условии что память вообще не освобождается).

А теперь по сути: как найти глючные плагины? Только методом последовательного отключения? Это займет месяц.


Полезные публикации - ссылки у меня в профиле. Ссылка на плагин против спама на сервере StopServerSpam там же.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ArhangeL
сообщение 6.8.2012, 3:40
Сообщение #8


Стаж: 17 лет

Сообщений: 1170
Благодарностей: 720
Полезность: 1076

Цитата
где утечка памяти - в самом HLDS или в AMXMOD?

Используемая версия amxx?

Если 1.8.1 и ниже, то проблема явно не в самом amxx т.к. такие катастрофические проседания памяти со стороны одного amxx уж точно заметили бы за 2 года.

Если 1.8.2, то это уже совсем другой вопрос, так сказать обратная сторона медали использования бета-версий. Ждите фиксов что ли...
Ну а коли мозг есть, и дано рулить машиной, то флаг вам в руки.. соберите свой amxx. Код не сложный там, если не лезть в дебри компилятора.

Цитата
хотелось бы такое увидеть если на серваке всего гигабайт стоит

Далеко не новость. Кушали и по-больше, не подавились....

Цитата
блин, я сам программист и немного разбираюсь в разработке приложений с поддержкой плагинов и самих плагинов. если плагин подгружается динамически (допустим при старте сервера и смене карты) то он должен выгружаться по окончании mp_timelimit и вся память должна освобождаться.

Там все немного по-другому устроено. И чесно сказать - идиоты.

Цитата
Хорошо, допустим это плагины кривые.
Тогда берем 260 Мб в конце периода минус 80 Мб при запуске сервера это 180Мб которые набегают примерно за сутки. таймлимит стоит час, т.е. делим это на 24 часа или 24 карты в сутки и получаем 7.5 мб за раз. Найдите мне плагин который хранит в памяти столько данных (этопри условии что память вообще не освобождается).

Опять же amxx не отвечает за память, которую выделяют для своих нужд плагины.


Провел эксперимент.. написал плагин:
Код
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "Admin"


public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    // Add your code here..
    set_task(1.0,"TaskFunc",0,"",0,"b")
}

public TaskFunc()
{
for(new i = 0; i < 5; i++) {
   new Array:db = ArrayCreate(5000)    
}

    
}


При запуске серрвера. сервер завесил *** 74 метра. Посидел 5 минут, плагин успежно дожрал 4 метра памяти. Итого 78 мб. Я сделал changelevel de_dust2, подпрыгнул до 81 мб, теперь сервер занимает целых 80 мб. Откуда там взялось ещё 2 метра за 3 секунды - хз.

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

Цитата
А теперь по сути: как найти глючные плагины? Только методом последовательного отключения? Это займет месяц.

Только им =) Коли программер, возьмите и допишите своих функций..

Отредактировал: ArhangeL, - 6.8.2012, 3:44
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Cracky
сообщение 6.8.2012, 7:46
Сообщение #9


Стаж: 15 лет

Сообщений: 768
Благодарностей: 197
Полезность: 506

а еще плагины могут ENG_func_allocate_string, и память от этой функции никогда не очищается.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя Metal Messiah
сообщение 6.8.2012, 21:41
Сообщение #10


Иконка группы

Стаж: 13 лет

Сообщений: 2458
Благодарностей: 1482
Полезность: 772

HostGame.cf
опа. значит ищу плагины с массивами и этими функциями.
первыми под подозрение попадают stasx, umm, atac и wallblocker


Полезные публикации - ссылки у меня в профиле. Ссылка на плагин против спама на сервере StopServerSpam там же.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 330863
сообщение 6.8.2012, 21:58
Сообщение #11


Стаж: 16 лет

Сообщений: 4358
Благодарностей: 1079
Полезность: 497

Metal Messiah,
atac, wallblocker более вероятно причина
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: