2

OpenX 情報: Apache 2.2.19、PHP 5.3.6、および MySQL 5.1.56-log で動作する OpenX v2.8.7。

OpenX の分散インストールで問題が発生しています。

グローバル データベースと管理インターフェイスを備えた 1 つのマスター サーバーと、バナーを提供するローカル データベースを備えたいくつかのスレーブ サーバー (今のところ 1 つ) に基づくアーキテクチャがあります。

MASTER の MySQL レプリケーションは正常に動作しており (マスターのすべての変更がスレーブに複製されるため)、メンテナンス スクリプト (MASTER の maintenance.php および SLAVE の maintenance-distributed.php) は正常に動作しているように見えます (いいえ悪いデバッグ トレース)。システムは、分散システムの OpenX ドキュメントに従って構成されました。

これらは、メンテナンス スクリプトを実行する cronjobs です。

主人

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

スレーブ

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;

結果には、ログに記録され、SLAVE から MASTER に送信されたすべてのインプレッションが含まれます。

+---------------------+------------+
| 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が過去の統計の問題を実際に修正していることがわかりましたが、新しい統計はまだ表示されません。MASTER の各メンテナンス サイクルの後に republish.php スクリプトを使用すると正しい数値が得られることがわかりましたが、これは汚い修正であり、本当の解決策であるに違いないと思います。

4

2 に答える 2

4

これが起こっているのを見たほとんどすべてのケースで、マスターとスレーブのクロックが異なるタイムゾーン設定で実行されていることが判明したため、マスターは(まだ)存在しない生の統計を探しました。

于 2011-06-27T07:12:02.237 に答える
1

問題は修正されました。これは、メンテナンス スクリプトのタイミングの問題でした。

マスターノードでmaintenance.phpが呼び出される前に、スレーブノードでmaintenance-distributed.phpを呼び出す必要がありますが、最後の1時間の統計がすでになくなったら、maintenance-distributed.phpを呼び出す必要があります...明確にするための例:

00:00:00 から 00:59:59 までスレーブ サーバーでインプレッションを取得します。スレーブ サーバーで 01:01:00 に Maintenance-distributed.php を実行すると、データが MASTER ノードに送り返されます。たとえば、01:05:00 に MASTER ノードで maintenance.php を実行できるとします。

これらは新しい cronjobs です:

主人

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

スレーブ

1,10,25,40,55 * * * * /usr/local/bin/php /var/www/scripts/maintenance/maintenance-distributed.php www.mydomine.php
于 2011-06-27T10:43:29.867 に答える