Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

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

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 3 из 3
На страницу: Пред.  1, 2, 3 | Все страницы
Поиск в этой теме:
Канал Игры Мечты: «Multithreading в играх»
Minx
 978 EGP


Модератор
Рейтинг канала: 6(328)
Репутация: 135
Сообщения: 10523
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Мы недавно совсем задействовали watchdog на actor model фреймворке для C++ (SObjectizer) в сфере e-commerce 24x7 high-load.

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

На практике watchdog реагирует на порядок быстрее, чем саппорт, и ещё быстрее по ночам. Т.о. повышается эксплуатационная готовность системы.

А основная причина зависания - повисание коннекта в Oracle. И чего там у оракла под капотом иногда творится не знают ни админы, ни техподдержка.

Ещё очень похожее на watchdog делали проверку сетевых соединений. Если траффика по открытому соединению нет, то по нему периодически инициируется обмен ping-pong. Если ping-pong за разумно-предельное время не проходит, то делается реконнект (т.е. как рестарт по инициативе watchdog'a).

Такие вот высокоуровневые сторожевые собаки.
_________________
μηδείς αγεωμέτρητος εισίτω

Последний раз редактировалось: Minx (14:59 19-12-2015), всего редактировалось 1 раз
    Добавлено: 14:59 19-12-2015   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
Minx :
Ещё очень похожее на watchdog делали проверку сетевых соединений. Если траффика по открытому соединению нет, то по нему периодически инициируется обмен ping-pong. Если ping-pong за разумно-предельное время не проходит, то делается реконнект (т.е. как рестарт по инициативе watchdog'a).

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

Minx :
На практике watchdog реагирует на порядок быстрее, чем саппорт, и ещё быстрее по ночам. Т.о. повышается эксплуатационная готовность системы.

А основная причина зависания - повисание коннекта в Oracle. И чего там у оракла под капотом иногда творится не знают ни админы, ни техподдержка.


Тем не менее это говнокод и костыль
_________________
MOV topka, C++
    Добавлено: 15:16 19-12-2015   
Minx
 978 EGP


Модератор
Рейтинг канала: 6(328)
Репутация: 135
Сообщения: 10523
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Jurec :
Это не совсем то. Одно дело переконнект, другое дело просто убить поток в состоянии лока.

Та же схема, только ресурс и действия другие.

Jurec :
Тем не менее это говнокод и костыль

Твое неговнокодовое бескостыльное решение?
_________________
μηδείς αγεωμέτρητος εισίτω

Последний раз редактировалось: Minx (15:18 19-12-2015), всего редактировалось 1 раз
    Добавлено: 15:17 19-12-2015   
Sh.Tac.
 151 EGP


Рейтинг канала: 5(108)
Репутация: 14
Сообщения: 1426

Зарегистрирован: 27.07.2005
Minx :
зависания - повисание коннекта в Oracle.
а странно, что в этом случае рестарт приложению, когда можно было бы ровно то же, что и во втором случае Улыбка

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

а в постгрес меня такую штуку заставили опсы написать, они иногда рестартили демон СУБД на живом игровом сервере
_________________
This is what you get ...
(c) Radiohead
    Добавлено: 16:19 19-12-2015   
Minx
 978 EGP


Модератор
Рейтинг канала: 6(328)
Репутация: 135
Сообщения: 10523
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Sh.Tac. :
а странно, что в этом случае рестарт приложению, когда можно было бы ровно то же, что и во втором случае

В том случае нить начала выполнять запрос и заткнулась в нем.

Реконнект как правило спасает если у оракла поехала крыша и при работе с коннектом сыплются ORA-ошибки-эксепшены. Что бывает чаще, чем зависшая нить.
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 18:40 19-12-2015   
БулерМэн
 420 EGP


Рейтинг канала: 2(21)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
Minx :
Соответственно, watchdog периодически посылает сообщения агентам (которые вызывают у них события) и те обязаны ответить по таймауту. Если таймаута нет, то принимается решение, чаще всего рестарт приложения (что уже отлажено).

У меня похожая задача была, решено было использовать аналогичный метод - если через N секунд нет ответа - убить "дочерний" процесс.
Работает весьма эффективно, то есть подходить вообще не нужно.
Конечно, если некорректно завершить головной процесс, который следит за всем этим хозяйством - то велика вероятность замусорить память не отвечающими процессами.
    Добавлено: 00:16 20-12-2015   
Vostok-1
 155 EGP


Репутация: 24
Сообщения: 394

Зарегистрирован: 15.08.2015
Sh.Tac. :
с более-менее промышленной СУБД, MS-SQL, то там коннект дохнет сам по себе, возможно по таймауту,


Совершенно точно по тайм-ауту. Потому, пользуйтесь пулом соединений.
_________________
"The gods do not protect fools.
Fools are protected by more capable fools."

Larry Niven
    Добавлено: 10:15 20-12-2015   
Minx
 978 EGP


Модератор
Рейтинг канала: 6(328)
Репутация: 135
Сообщения: 10523
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Jurec :
эмдедед уже какой-то пошел

эмбедед тоже не лыком шит (;
http://www.oosmos.com/intro
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 17:53 21-12-2015   
Vostok-1
 155 EGP


Репутация: 24
Сообщения: 394

Зарегистрирован: 15.08.2015
Хочется спросить, нет ли менеджера памяти с автосборкой мусора для какого-нибудь простенького Си-компилятора.
_________________
"The gods do not protect fools.
Fools are protected by more capable fools."

Larry Niven
    Добавлено: 20:32 21-12-2015   
Канал Игры Мечты: «Multithreading в играх»
На страницу: Пред.  1, 2, 3 | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Я не гений, но уже достаточно близок к сумасшествию. (признался BuH)

  » Multithreading в играх | страница 3
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18