3

私はアプリケーションに適切なGeoIPデータベースを見つけようとしてきましたが、私が知る限り、MaxMind Cityがおそらく最高です(間違っている場合はお知らせください)。私は現在、英国では実際には正確ではない無料バージョンを試していますが、テスト目的で使用できます。

トピックに戻ります。

私たちのアプリはPHPで書かれており、最終的には大量の着信トラフィックが発生します。GeoIPデータベースを使用する理由は、ページが読み込まれるたびに都市、地域、国を表示し、特定の訪問者のデータをmysqlデータベースに保存する必要があるためです。そこで、ページリクエストごとにバイナリデータをロードすると、サーバーが大量のRAMを消費し、処理速度が上がると考え始めました。そのため、RAM内にキャッシュしてPHPで処理できるかどうか疑問に思っています。これは、26Mbであるためです(それほど多くないように思われるかもしれません)が、それでも1秒あたり数千のページリクエストを取得し始めると、明らかに避けたいパフォーマンスの低下につながります。

サーバー:

プロセッサー:16 GHz(8 x 2 GHz)

RAM:16384 MB

HDD:400 GB

Apache + Nginx + Varnish、PHP5.3、MySQL5.1

私たちは大規模なアプリ開発にまったく慣れていないので、一般的なパフォーマンスを改善する方法について何か提案がある場合、または私たちのケースのパフォーマンスの向上に関連する他のヒントがあれば、私に知らせてください。

ありがとう!

4

1 に答える 1

4

AdserverアプリケーションにMaxMindsGeoIPCityを使用しています(したがって、トラフィックが非常に多くなります)。データベースをメモリに配置するMaxMindのテストスクリプトに基づく一部のテストは、私たちにとって十分に効率的ではありませんでした。データはすべてのPHPプロセスに対してキャッシュされたためです。そこで、2つのテーブル(ip2locationとcity)をMySQLに配置することにしました(CSVファイルをダウンロードする必要があります)。テーブルは非常に小さいため、メモリにもキャッシュされます。テーブルにクラスター化インデックスを使用すると、約10ミリ秒でIPip2locationをクエリできるloc_idため、これに基づいて都市データを取得するloc_id必要がありますが、これも非常に高速である必要があります。

于 2012-02-22T13:09:37.410 に答える