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

Материал из Megatec
Перейти к: навигация, поиск
[досмотренная версия][досмотренная версия]
(Новая страница: «Версия статьи от {{REVISIONDAY}}-{{REVISIONMONTH}}-{{REVISIONYEAR}}. ==Введение== Документ предназначен для сот…»)
 
Строка 19: Строка 19:
 
Один из основных параметров, влияющих на скорость выставления тура в онлайн является число схем и маршрутов по туру. Чем их больше, тем дольше тур или изменения по нему будет выходить на сайт.<br />
 
Один из основных параметров, влияющих на скорость выставления тура в онлайн является число схем и маршрутов по туру. Чем их больше, тем дольше тур или изменения по нему будет выходить на сайт.<br />
  
Схема – это комбинация отель+продолжительность, на которую возможен тур. Таким образом число схем в ПТ будет равно количеству отелей в программе тура, умноженное на количество продолжительностей в данной программе тура. Обратите внимание, что в многоотельных турах число схем считается как произведение числа схем для каждой услуги проживания. <br />
+
'''Схема''' – это комбинация отель+продолжительность, на которую возможен тур. Таким образом число схем в ПТ будет равно количеству отелей в программе тура, умноженное на количество продолжительностей в данной программе тура. Обратите внимание, что в многоотельных турах число схем считается как произведение числа схем для каждой услуги проживания. <br />
 
Например: в ПТ две услуги проживания, в первой два отеля и две продолжительности. Во второй три отеля и четыре продолжительности. Общее число схем будет: '''(2 отеля*2 продолжительности)*(3 отеля*4 продолжительности) = 48'''.<br />
 
Например: в ПТ две услуги проживания, в первой два отеля и две продолжительности. Во второй три отеля и четыре продолжительности. Общее число схем будет: '''(2 отеля*2 продолжительности)*(3 отеля*4 продолжительности) = 48'''.<br />
 
Поэтому в многотельных турах мы рекомендуем пользоваться настройкой ограничения комбинаций отелей по категориям или (если это невозможно) разбивать тур на несколько ПТ.<br />
 
Поэтому в многотельных турах мы рекомендуем пользоваться настройкой ограничения комбинаций отелей по категориям или (если это невозможно) разбивать тур на несколько ПТ.<br />
  
Маршрут – это комбинация, точки отправления с точкой прибытия. Кроме этого для услуги перелет к ним добавляется рейс с временем вылета. Последний фактор очень важен, если у одного рейса несколько времен вылета (= строчек в расписании перелета), то считаться будет не один рейс, а столько, сколько строчек в расписании. Маршруты считаются только для маршрутных услуг.<br />  
+
'''Маршрут''' – это комбинация, точки отправления с точкой прибытия. Кроме этого для услуги перелет к ним добавляется рейс с временем вылета. Последний фактор очень важен, если у одного рейса несколько времен вылета (= строчек в расписании перелета), то считаться будет не один рейс, а столько, сколько строчек в расписании. Маршруты считаются только для маршрутных услуг.<br />  
 
Например: есть тур в Турцию с перелетом туда-обратно (два рейса), с двумя вариантами трансфера туда (аэропорт-Белек, аэропорт-Анталия) и два варианта трансфера обратно (Белек –Аэропорт и Анталия-аэропорт). По каждой маршрутной услуге считаем число маршрутов:
 
Например: есть тур в Турцию с перелетом туда-обратно (два рейса), с двумя вариантами трансфера туда (аэропорт-Белек, аэропорт-Анталия) и два варианта трансфера обратно (Белек –Аэропорт и Анталия-аэропорт). По каждой маршрутной услуге считаем число маршрутов:
 
* Перелет туда – 2 маршрута (потому что два рейса)
 
* Перелет туда – 2 маршрута (потому что два рейса)
Строка 33: Строка 33:
 
Чем больше схем и/или маршрутов у вас в одной ПТ, тем дольше тур или изменения по нему будут выходить в онлайн. К сожалению, невозможно указать точную максимальную цифру числа схем и маршрутов. Она привязана к характеристикам вашего железа. Но мы рекомендуем ориентироваться на цифру 300. Скорее всего у вас не будет проблем с ПТ, в которой будет не более 5000 схем и 2000 маршрутов.  
 
Чем больше схем и/или маршрутов у вас в одной ПТ, тем дольше тур или изменения по нему будут выходить в онлайн. К сожалению, невозможно указать точную максимальную цифру числа схем и маршрутов. Она привязана к характеристикам вашего железа. Но мы рекомендуем ориентироваться на цифру 300. Скорее всего у вас не будет проблем с ПТ, в которой будет не более 5000 схем и 2000 маршрутов.  
 
   
 
   
 +
===Оптимальные программы туров===
  
===Оптимальные ПТ===
 
 
Подводя итоги:
 
 
* На скорость выставления ПТ в онлайн прежде всего влияет совокупность количества схем отелей и количества маршрутов. Причем число маршрутов сильнее влияет на производительность. Мы не рекомендуем в одной ПТ иметь более 5000 схем и 2000 маршрутов.
 
* На скорость выставления ПТ в онлайн прежде всего влияет совокупность количества схем отелей и количества маршрутов. Причем число маршрутов сильнее влияет на производительность. Мы не рекомендуем в одной ПТ иметь более 5000 схем и 2000 маршрутов.
 
* Обращайте внимание на количество расписаний для авиаперелетов. Этот параметр существенно влияет на число маршрутов. Даже если у вас один ежедневный рейс, но с разным временем вылета, вы получите 7 маршрутов.
 
* Обращайте внимание на количество расписаний для авиаперелетов. Этот параметр существенно влияет на число маршрутов. Даже если у вас один ежедневный рейс, но с разным временем вылета, вы получите 7 маршрутов.
Строка 42: Строка 40:
 
* Приводимые ограничения не являются абсолютными. У вас может быть ''быстрая'' ПТ с 10000 маршрутами, но всего с несколькими схемами отелей и наоборот.  
 
* Приводимые ограничения не являются абсолютными. У вас может быть ''быстрая'' ПТ с 10000 маршрутами, но всего с несколькими схемами отелей и наоборот.  
  
===Неоптимальные ПТ===
+
===Неоптимальные программы туров===
  
 
В этом разделе мы приводим варианты неоптимальных ПТ, которые приводили к проблемам в работе службы поиска и расчетов.
 
В этом разделе мы приводим варианты неоптимальных ПТ, которые приводили к проблемам в работе службы поиска и расчетов.
Строка 50: Строка 48:
 
* Пример типичной ПТ, «выше» которой, скорее всего начнутся проблемы с производительностью: 1 город вылета, 5 городов (курортов), 10 вариантов трансферов, 50 отелей в каждом городе и связка трансферов осуществляется через маршрутные точки: город отеля -> отель (к примеру для каждого трансфера выбрано 4 отеля). Число маршрутов для данной ПТ – '''1*5*10*50*4=10000'''.<br />
 
* Пример типичной ПТ, «выше» которой, скорее всего начнутся проблемы с производительностью: 1 город вылета, 5 городов (курортов), 10 вариантов трансферов, 50 отелей в каждом городе и связка трансферов осуществляется через маршрутные точки: город отеля -> отель (к примеру для каждого трансфера выбрано 4 отеля). Число маршрутов для данной ПТ – '''1*5*10*50*4=10000'''.<br />
 
Обратите внимание, что приведенные примеры не являются абсолютными. Т.е. вполне возможно, что вы сделаете ПТ с 50-тью вариантами трансферов, и этот тур будет выходить в онлайн за 30 сек. Важно понимать, что в конечном счете на производительность системы влияет общее число комбинаций, которое получится в итоге в рамках одной ПТ. Кроме этого многое зависит от мощности сервера, на котором располагается служба поиска и расчетов ([[Мастер-Тур(15):Системно-аппаратные требования|минимальные требования здесь]]).
 
Обратите внимание, что приведенные примеры не являются абсолютными. Т.е. вполне возможно, что вы сделаете ПТ с 50-тью вариантами трансферов, и этот тур будет выходить в онлайн за 30 сек. Важно понимать, что в конечном счете на производительность системы влияет общее число комбинаций, которое получится в итоге в рамках одной ПТ. Кроме этого многое зависит от мощности сервера, на котором располагается служба поиска и расчетов ([[Мастер-Тур(15):Системно-аппаратные требования|минимальные требования здесь]]).
 
  
 
==Типичные ошибки==
 
==Типичные ошибки==
Строка 58: Строка 55:
 
Не привязаны трансферы к геоточкам Система считает, что такой трансфер доступен для всех отелей. Это приводит к увеличению числа маршрутных комбинаций, иногда очень значительному.
 
Не привязаны трансферы к геоточкам Система считает, что такой трансфер доступен для всех отелей. Это приводит к увеличению числа маршрутных комбинаций, иногда очень значительному.
 
В ПТ есть услуги, привязанные к разным геоточкам. Услуги между собой никак не связаны. Например, нет трансферов между этими двумя геоточками Система не может выстроить маршрут, так как не находит услуг, связывающих две геоточки. Тур не выходит в онлайн.
 
В ПТ есть услуги, привязанные к разным геоточкам. Услуги между собой никак не связаны. Например, нет трансферов между этими двумя геоточками Система не может выстроить маршрут, так как не находит услуг, связывающих две геоточки. Тур не выходит в онлайн.
 
  
 
==Выводы==
 
==Выводы==
Строка 64: Строка 60:
 
Все приведенные советы и примеры являются ориентирами, которые следует проверять на практике. У нас есть примеры ТО, у которых при общем большом числе схем по всем ПТ (0,5 млн), служба поиска и расчетов перезапускается за 8 мин, в то время как у другого ТО, со 100 тыс. схем, перезапуск службы занимает 20 мин, при том что сервер у второго ТО мощнее.<br />  
 
Все приведенные советы и примеры являются ориентирами, которые следует проверять на практике. У нас есть примеры ТО, у которых при общем большом числе схем по всем ПТ (0,5 млн), служба поиска и расчетов перезапускается за 8 мин, в то время как у другого ТО, со 100 тыс. схем, перезапуск службы занимает 20 мин, при том что сервер у второго ТО мощнее.<br />  
 
Поэтому общий совет – начинайте с простых ПТ. И постепенно увеличивайте число комбинаций, добавляя туда новые варианты услуг. Так вы точно будет понимать, где находится предел вашей системы.
 
Поэтому общий совет – начинайте с простых ПТ. И постепенно увеличивайте число комбинаций, добавляя туда новые варианты услуг. Так вы точно будет понимать, где находится предел вашей системы.
 
  
 
==Если что-то пошло не так==
 
==Если что-то пошло не так==
Строка 70: Строка 65:
 
Вы выставляете новую ПТ, но она не выставляется, и вы не понимаете, что происходит. В такой ситуации советуем посмотреть логи, которая ведет служба поиска и расчетов.<br />
 
Вы выставляете новую ПТ, но она не выставляется, и вы не понимаете, что происходит. В такой ситуации советуем посмотреть логи, которая ведет служба поиска и расчетов.<br />
 
В файлах-логах можно найти определенную информацию по каждому этапу работы системы.  
 
В файлах-логах можно найти определенную информацию по каждому этапу работы системы.  
 
  
 
===Существующие логи===
 
===Существующие логи===
Строка 84: Строка 78:
 
Если служба поиска и расчетов загружается дольше обычного или не загружается совсем, то в файле ''TourSearchCache.txt'' необходимо найти туры, в которых время загрузки более 5 минут.<br />  
 
Если служба поиска и расчетов загружается дольше обычного или не загружается совсем, то в файле ''TourSearchCache.txt'' необходимо найти туры, в которых время загрузки более 5 минут.<br />  
  
''Что искать:<br />
+
''Что искать:''<br />
Tour key: 100003426. Scheme count: 2156. Routes count: 12350. Time: 00:08:36.0000000''<br />
+
''Tour key: 100003426. Scheme count: 2156. Routes count: 12350. Time: 00:08:36.0000000''<br />
  
''Как расшифровать:<br />
+
''Как расшифровать:''<br />
Программа тура с ключом 100003426 имеет 2156 схем и 12350 маршрутов, рассчитывалась 8 мин 36 сек.''<br />
+
''Программа тура с ключом 100003426 имеет 2156 схем и 12350 маршрутов, рассчитывалась 8 мин 36 сек.''<br />
  
 
''Решение:''<br />
 
''Решение:''<br />
Строка 98: Строка 92:
 
Поэтому мы рекомендуем, при непонятных ситуациях проанализировать данные из файла ''TourSearch.txt'', а именно сравнить количество актуальных фильтров и время расчета актуальных фильтров последнего запуска с аналогичными данными из предыдущих расчетов.<br />
 
Поэтому мы рекомендуем, при непонятных ситуациях проанализировать данные из файла ''TourSearch.txt'', а именно сравнить количество актуальных фильтров и время расчета актуальных фильтров последнего запуска с аналогичными данными из предыдущих расчетов.<br />
  
''Что искать:<br />
+
''Что искать:''<br />
processed: 255570 / 255630 <br />
+
''processed: 255570 / 255630 <br />''
processed: 255600 / 255630 <br />
+
''processed: 255600 / 255630 <br />''
processed: 255630 / 255630 <br />
+
''processed: 255630 / 255630 <br />''
Actual filters facade: tree initialization completed, time (sec): 235.2935756 <br />
+
''Actual filters facade: tree initialization completed, time (sec): 235.2935756''<br />
  
Как расшифровать:<br />
+
''Как расшифровать:''<br />
Общее количество актуальных фильтров – 255630. Данные фильтры рассчитывались ~ 224 сек (~ 4 мин)<br />
+
''Общее количество актуальных фильтров – 255630. Данные фильтры рассчитывались ~ 224 сек (~ 4 мин)''<br />
  
Решение:'' <br />
+
''Решение:''<br />
 
Если в разы увеличилось время расчета актуальных фильтров, то необходимо проанализировать добавленные за это время программы туров.
 
Если в разы увеличилось время расчета актуальных фильтров, то необходимо проанализировать добавленные за это время программы туров.

Версия 16:45, 12 июля 2018

Версия статьи от 12-07-2018.

Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Обратите внимание, что приведенные примеры не являются абсолютными. Т.е. вполне возможно, что вы сделаете ПТ с 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: 255570 / 255630
processed: 255600 / 255630
processed: 255630 / 255630
Actual filters facade: tree initialization completed, time (sec): 235.2935756

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

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