Loading
Пропустить Навигационные Ссылки.

Авторизоваться
Для зарегистрированных пользователей

Профилирование времени выполнения запросов на получение тайлов изображений

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

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

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