Мастер-Тур(15):Методика формирования программ туров

Материал из Megatec
Перейти к: навигация, поиск

Версия статьи от 28-07-2020.

Введение

Документ предназначен для сотрудников ТО, использующих ПК Мастер-Тур 15, в обязанности которых входит формирование продукта. Цель документа – помочь избежать типичных ошибок и поделиться успешными практиками.
Сокращения:
ПТ – программа тура
ЦБ ~ ценовой блок

Основные параметры ПТ, влияющие на производительность

Основной критерий, с помощью которого можно понять оптимально вы работаете с ПТ или нет, это скорость выставления продукта (или изменений в продукте) в онлайн. Если новая ПТ выходит в онлайн менее чем за 2-5 мин – значит все правильно. Если больше – это повод задуматься. Похоже, что что-то пошло не так.

Также следует отслеживать время, за которое перезапускается служба поиска и расчетов. Если полное время перезапуска превышает 1 час – значит надо что-то менять в ПТ или в железе.

Мы выделили несколько параметров, которые влияют на скорость, с которой изменения, произведённые менеджерами в турпродукте (изменения в ЦБ, ценах, ПТ, отелях и т.п.) отображаются на сайте.

Число схем и маршрутов

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

Схема – это комбинация отель+продолжительность, на которую возможен тур. Таким образом число схем в ПТ будет равно количеству отелей в программе тура, умноженное на количество продолжительностей в данной программе тура. Обратите внимание, что в многоотельных турах число схем считается как произведение числа схем для каждой услуги проживания.
Например: в ПТ две услуги проживания, в первой два отеля и две продолжительности. Во второй три отеля и четыре продолжительности. Общее число схем будет: (2 отеля*2 продолжительности)*(3 отеля*4 продолжительности) = 48.
Поэтому в многотельных турах мы рекомендуем пользоваться настройкой ограничения комбинаций отелей по категориям или (если это невозможно) разбивать тур на несколько ПТ.

Маршрут – это комбинация, точки отправления с точкой прибытия. Кроме этого для услуги перелет к ним добавляется рейс с временем вылета. Последний фактор очень важен, если у одного рейса несколько времен вылета (= строчек в расписании перелета), то считаться будет не один рейс, а столько, сколько строчек в расписании. Маршруты считаются только для маршрутных услуг.
Например: есть тур в Турцию с перелетом туда-обратно (два рейса), с двумя вариантами трансфера туда (аэропорт-Белек, аэропорт-Анталия) и два варианта трансфера обратно (Белек –Аэропорт и Анталия-аэропорт). По каждой маршрутной услуге считаем число маршрутов:

  • Перелет туда – 2 маршрута (потому что два рейса)
  • Перелет обратно – 2 маршрута
  • Трансфер туда – 2 маршрута
  • Трансфер обратно – 2 маршрута

Количество маршрутов будет равно 2*2*2*2=16.

Чем больше схем и/или маршрутов у вас в одной ПТ, тем дольше тур или изменения по нему будут выходить в онлайн. К сожалению, невозможно указать точную максимальную цифру числа схем и маршрутов. Она привязана к характеристикам вашего железа. Наша статистика показывает, что ПТ в ~300 схем и ~300 маршрутов не вызывает каких-то проблем с производительностью. Мы не рекомендуем в одной ПТ иметь более 5000 схем и 2000 маршрутов.

Оптимальные программы туров

  • На скорость выставления ПТ в онлайн прежде всего влияет совокупность количества схем отелей и количества маршрутов. Причем число маршрутов сильнее влияет на производительность. Мы не рекомендуем в одной ПТ иметь более 5000 схем и 2000 маршрутов.
  • Обращайте внимание на количество расписаний для авиаперелетов. Этот параметр существенно влияет на число маршрутов. Даже если у вас один ежедневный рейс, но с разным временем вылета, вы получите 7 маршрутов.

Обращайте внимание на число городов вылета-прилета. Каждый город это новый маршрут.

  • Приводимые ограничения не являются абсолютными. У вас может быть быстрая ПТ с 10000 маршрутами, но всего с несколькими схемами отелей и наоборот.

Неоптимальные программы туров

В этом разделе мы приводим варианты неоптимальных ПТ, которые приводили к проблемам в работе службы поиска и расчетов.

  • В одной ПТ сделано более 30-ти вариантов трансферов
  • В одной ПТ внесено более 15 отелей с 30 вариантами продолжительности.
  • Заезды по ПТ каждый день, и тур рассчитанный на продолжительность от 1-го до 29 дней (и более)
  • Пример типичной ПТ, «выше» которой, скорее всего начнутся проблемы с производительностью: 1 город вылета, 5 городов (курортов), 10 вариантов трансферов, 50 отелей в каждом городе и связка трансферов осуществляется через маршрутные точки: город отеля -> отель (к примеру для каждого трансфера выбрано 4 отеля). Число маршрутов для данной ПТ – 1*5*10*50*4=10000.
  • Одна ПТ, в которой более 10 продолжительностей и более 10 городов является неоптимальной для расчета актуальных фильтров

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

Типичные ошибки

Здесь приведены типичные ошибки, которые допускают менеджеры при формировании ПТ.

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

Выводы

Все приведенные советы и примеры являются ориентирами, которые следует проверять на практике. У нас есть примеры ТО, у которых при общем большом числе схем по всем ПТ (0,5 млн), служба поиска и расчетов перезапускается за 8 мин, в то время как у другого ТО, со 100 тыс. схем, перезапуск службы занимает 20 мин, при том что сервер у второго ТО мощнее.
Поэтому общий совет – начинайте с простых ПТ. И постепенно увеличивайте число комбинаций, добавляя туда новые варианты услуг. Так вы точно будет понимать, где находится предел вашей системы.

Если что-то пошло не так

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

Существующие логи

В МТ 15.2 ведется 4 лога:

  • DictionaryCacheLog.txt – первоначальная загрузка в кеш всех справочников
  • TourSearch.txt – первоначальный расчет и перерасчет актуальных фильтров, информация о поисковых запросах
  • TourSearchApi.txt – информация о поисковых запросах к API поисковыми системами
  • TourSearchCache.txt – детализированная информация при первоначальной загрузке в кеш и об изменениях всех данных в системе

TourSearchCache.txt – лог загрузки ПТ в кеш

Если служба поиска и расчетов загружается дольше обычного или не загружается совсем, то в файле TourSearchCache.txt необходимо найти туры, в которых время загрузки более 5 минут.

Что искать:
Tour key: 100003426. Scheme count: 2156. Routes count: 12350. Time: 00:08:36.0000000

Как расшифровать:
Программа тура с ключом 100003426 имеет 2156 схем и 12350 маршрутов, рассчитывалась 8 мин 36 сек.

Решение:
В данной ПТ явно превышено число маршрутов. Ваша система не справляется с таким большим числом комбинаций. Необходимо либо уменьшить число маршрутов в ПТ, либо разбить данную турпрограмму на несколько, для уменьшения количества маршрутов.

TourSearch.txt – лог расчета актуальных фильтров

Актуальные фильтры – это список значений, которые появляются в выпадающих списках основных фильтров в форме поиска туров. Например, когда вы нажимаете фильтр «Куда», система показывает варианты стран, для которых есть цена. Когда вы добавляете новую ПТ с новой страной, она должна попасть в список стран, по которой есть туры. Эта процедура и называется расчетом актуальных фильтров. При создании неоптимального тура она может занимать продолжительное время.
Поэтому мы рекомендуем, при непонятных ситуациях проанализировать данные из файла TourSearch.txt, а именно сравнить количество актуальных фильтров и время расчета актуальных фильтров последнего запуска с аналогичными данными из предыдущих расчетов.

Что искать:
processed: 2499009 / 2507042 by tour programs: 100008192
processed: 2502007 / 2507042 by tour programs: 100008192
processed: 2505000 / 2507042 by tour programs: 100008192
ActualFilters: processing complete. Time: 00:09:16.7486096

Как расшифровать:
Общее количество актуальных фильтров – 2507042. Данные фильтры рассчитывались ~ 9 мин

Решение:
Если в разы увеличилось время расчета актуальных фильтров, то необходимо проанализировать добавленные за это время программы туров.

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

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

Что искать:
processed: 2499009 / 2507042 by tour programs: 100008192
processed: 2502007 / 2507042 by tour programs: 100008192
processed: 2505000 / 2507042 by tour programs: 100008192
ActualFilters: processing complete. Time: 00:09:16.7486096

где 100008192 – ключ турпрограммы, по которой происходит расчет актуальных фильтров. Если расчет актуальных фильтров по одной турпрограмме происходит более нескольких минут, нужно проанализировать эту турпрограмму. Неоптимальной турпрограммой для расчета актуальных фильтров является программа,в которой более 10 продолжительностей и более 10 городов.

Существующие ограничения системы

Отображения не минимальной цены для конкретного отеля

Примерно в 1% результатов поиска может возникать ситуация, когда для конкретного отеля подбирается не самая минимальная цена. Отображения минимальной цены конкретного отеля

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

Взвешивание цены на услугу, при разных типах цен

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