Главный сервер Openx не обрабатывает подчиненную статистику

Информация OpenX: OpenX v2.8.7, работающий под Apache 2.2.19, PHP 5.3.6 и MySQL 5.1.56-log.

У меня проблемы с распределенной установкой OpenX.

У меня есть архитектура, основанная на одном сервере MASTER с глобальной базой данных и интерфейсом администрирования, а также на некоторых SLAVE-серверах (на данный момент один) с локальной базой данных, которая обслуживает баннеры.

Репликация MySQL MASTER работает нормально (так как каждое изменение в мастере реплицируется на ведомое устройство), а сценарии обслуживания (maintenance.php для MASTER и maintenance-distrib.php для SLAVE) выглядят хорошо (нет плохие следы отладки). Система была настроена в соответствии с документацией OpenX для распределенных систем.

Вот cronjobs, которые запускают сценарии обслуживания:

МАСТЕР

5 * * * * /usr/local/bin/php /var/www/scripts/maintenance/maintenance.php www.mydomine.com

SLAVE

10,25,40,55 * * * * /usr/local/bin/php /var/www/scripts/maintenance/maintenance-distributed.php www.mydomine.php

Проблема в том, что сводка показов не рассчитывается и не отображается в интерфейсе администратора (на сервере MASTER), я отлаживаю и получаю следующий результат:

  1. Баннеры обслуживаются хорошо
  2. Ведомый сервер регистрирует показы в порядке.
  3. Подчиненный сервер отправляет данные обратно на MASTER OK
  4. Мастер получает данные с сервера (таблицы ox_data_bkt_* заполнены)
  5. Мастер не суммирует данные по интерфейсу администрирования

Это пример запроса из базы данных MASTER:

select interval_start, sum(count) from ox_data_bkt_m group by interval_start;

Результат содержит все впечатления, зарегистрированные и отправленные из РАБА МАСТЕРУ.

+---------------------+------------+
| interval_start      | sum(count) |
+---------------------+------------+
| 2011-06-25 10:00:00 | 1883133 |
| 2011-06-25 11:00:00 | 2074979 |
| 2011-06-25 12:00:00 | 2239609 |
+---------------------+------------+
5 rows in set (0.00 sec)

Но на интерфейсе администрирования я не получил пока впечатлений....

Испытывая вещи, мы поняли, что скрипт scripts / maintenance / tool / republish.php на самом деле решает проблему с прошлой статистикой, но новые по-прежнему не отображаются. Мы выяснили, что использование сценария republish.php после каждого цикла обслуживания на MASTER даст правильные значения, но я думаю, что это грязное исправление и должно быть реальным решением.

2 ответа

Решение

Проблема исправлена, это была проблема с синхронизацией сценариев обслуживания.

Maintenance-distrib.php должен вызываться на подчиненных узлах ДО ТОГО, как maintenance.php вызывается на узле MASTER, НО maintenance-distrib.php должен вызываться после того, как последний час статистики уже прошел... просто пример, чтобы было понятно:

Я получаю показы на подчиненном сервере с 00:00:00 до 00:59:59, я запускаю maintenance-distrib.php в 01:01:00 на подчиненном сервере, и теперь данные отправляются обратно на узел MASTER, скажем, например, в 01:05:00 я могу запустить maintenance.php на узле MASTER.

Это новые cronjobs:

МАСТЕР

5 * * * * /usr/local/bin/php /var/www/scripts/maintenance/maintenance.php www.mydomine.com

SLAVE

1,10,25,40,55 * * * * /usr/local/bin/php /var/www/scripts/maintenance/maintenance-distributed.php www.mydomine.php

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

Другие вопросы по тегам