пятница, 27 ноября 2009 г.

Как отлавливать лаги в программе


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

Чтобы выяснить, чем же именно непотребным занимается сервер во время лагов, была сделана очень простая штука: lag detector. Это специальный thread, который каждые 50 миллисекунд просыпается и смотрит на счетчик внутреннего цикла основного рабочего потока. Если счетчик не менялся уже длительное время (например, 200 миллисекунд), то что-то не в порядке. Lag detector пишет в лог сообщение об ошибке и call stack основного потока.

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

Комментариев нет:

Отправить комментарий