[SRCDS] Как определить причину падения?

Обсуждаем все, что относится к выделенным серверам *NIX (Unix, Linux) и Windows
Ответить
Сообщение
Автор
RU_6uK
Капитан
Капитан
Сообщения: 319
Зарегистрирован: 26.12.2009
Поблагодарили: 15 раз

#1 Сообщение 02.11.2011, 15:29

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

Расскажу о самых вероятных причинах.

1. Неправильная установка сервера. Поможет внимательное прочтение инструкций по установке.
2. Неправильная установка модов (SM, MM и т.п.). Опять же, прочтение инструкций.

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

3. Конфликты или ошибки плагинов для модов. Первым делом вы должны смотреть логи ошибок в папке с модом. Пробуйте отключать все плагины, вызывающие сомнения. Проверьте версии плагинов и обновите их до самых актуальных. В этом случае полезно читать последние отзывы и комментарии на оф. странице плагина, т.к. не всегда новое - лучшее. Не забывайте обновлять непосредственно сами моды (SM, MM и др.).

А теперь способ выявления причин падения сервера, который почти нигде не освещается, но при этом он является самым эффективным. Чтение дампов памяти и дебаг-логов после падения сервера.
Чтобы файл логов создавался, необходимо добавить в строку запуска сервера -debug
После падения в папке сервера появляется 2 файла: core и debug.log. Также происходит отправка мини-дампа в Valve.

Еще одна проблема в том, что какое-то время назад после одного из обновлений мини-дампы перестали сохраняться на сервере, а они тоже были бы полезными, если изучить их. Существует плагин для Metamod'а: Accelerator - Take back control, который перенаправляет дампы на другой сайт. К сожалению, с этим плагином серверы L4D2 моментально падают при запуске. Также есть способ указать в hosts адрес сервера Valve, как локальный. Но и этот способ не работает, т.к. там заморочки со SteamID.

Вопроса два.
1. Как определить, что вызывает падение сервера, опираясь на файлы core и debug.log?
2. Как получить мини-дампы, которые отправляются в Valve при падении сервера?
ИзображениеИзображение
/.ZoZo./ Zombie Zone - Серверы Left 4 Dead 2, Team Fortress 2, Killing Floor. Всегда рады хорошим игрокам!

kadet89
Майор
Майор
Сообщения: 557
Зарегистрирован: 26.12.2006

#2 Сообщение 03.11.2011, 01:46

Скрипты надо нормально писать и не по 5 штук за день а по одному тогда всё будет нормально, а если будет ошибка - легко определить где именно. Дебаг лог всегда пуст, причина падения выводится только в консоль перед тем как серв рестартится. В консол.лог причина тоже не записывается. Если ошибка в см, то надо смотреть соответствующие логи см и сопоставлять их с тем что выводится в консоли серва перед его рестартом. Если падения происходят постоянно через определенный интервал времени - надо сделать дамп памяти и смотреть утечки. Думаю как это делать все знают, чтоб такого не происходило при программировании надо просто быть внимательным и закрывать все хэндлы и анхукать хуки. Переполнение массивов если будет - появится сообщение в логах т.ч. эта проблема тоже легко устраняется. Ну а вообще по личному опыту могу сказать что раз в месяц-два серву свойственно падать.
Думаю тут больше нечего сказать.. на чистом с++ вроде плагины никто щас и не делает для серва, а кто делает тот знает как отладку делать.
С вальве нет смысла общаться, за 5 лет посылал им писем 40-50 с разными вопросами и проблемами. Они всегда просто давали пустые обещания.

RU_6uK
Капитан
Капитан
Сообщения: 319
Зарегистрирован: 26.12.2009
Поблагодарили: 15 раз

#3 Сообщение 03.11.2011, 02:50

Выяснилось, что дампы после падения пишутся в системную директорию /tmp/dumps/. Но только на лицензионном севере. Сервер с RevEmu не пишет. Видимо влияет измененный steamclient.
Открывать эти дампы можно через Visual Studio.
ИзображениеИзображение
/.ZoZo./ Zombie Zone - Серверы Left 4 Dead 2, Team Fortress 2, Killing Floor. Всегда рады хорошим игрокам!

Аватара пользователя
kolobok66rus
Капитан
Капитан
Сообщения: 266
Зарегистрирован: 29.10.2010
Поблагодарили: 4 раза

#4 Сообщение 03.11.2011, 12:01

Ну я хотел бы добавить несколько строк...

1. Много ещё зависит от системы на которой стоит сервер

2. Если сервер no-steam , то так же зависит контингент заходящих клиентов (unknow , cracked и т.д. )

Вот могу привести пример падения моего Surf сервера :

Сначала он падал из-за переполнения ошибкой ERROR: invalid edict index when reticulating splines!

Это я устранил фиксом для SDK Hooks

Сегодня утром он упал из-за постоянного реконнекта одного игрока , который постоянно делал (time out )

Вывод : падения сервера надо смотреть по ситуации и соответственно принимать меры исходя из этой ситуации..

Дело в том что у меня 6 серверов , 2 из которых вапще не падают (тьфу тьфу тьфу ) , а остальные бывают 1 раз в 2-3 суток, MM и SM стоят одинаковые , всё одинаково . Так что тут палка в двух концах .

С уважением Алексей !
CPU -AMD Phenom II X6 1100T Black Edition (HDE00ZF) 3.3 ГГц
MEM -SAMSUNG DDR-III DIMM 4Gb <PC3-10600> x4 - 16Гб
OC - Linux Debian 6.0.1 amd_64

Мой сервер CS:GO [NO-STEAM] : 46.48.26.209:27022

Аватара пользователя
Jonny
Полковник
Полковник
Сообщения: 1371
Зарегистрирован: 30.05.2008
Благодарил (а): 23 раза
Поблагодарили: 54 раза

#5 Сообщение 03.11.2011, 20:13

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

Ответить