Главный сервер 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), я отлаживаю и получаю следующий результат:
- Баннеры обслуживаются хорошо
- Ведомый сервер регистрирует показы в порядке.
- Подчиненный сервер отправляет данные обратно на MASTER OK
- Мастер получает данные с сервера (таблицы ox_data_bkt_* заполнены)
- Мастер не суммирует данные по интерфейсу администрирования
Это пример запроса из базы данных 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
Почти во всех случаях, когда я видел это, оказалось, что часы на ведущем устройстве и ведомом устройстве работали с разными настройками часового пояса, в результате чего ведущее устройство искал необработанную статистику, которой просто не было (пока).