私は現在、水(3,198,333レコード)と世界の詳細な世界の境界(processed_p)をレンダリングしようとしています。両方のレイヤーのレンダリングに成功しましたが、パフォーマンスに満足していません。
私の現在のセットアップは次のとおりです:
- Amazon EC2インスタンス(m2.2xlarge)
- 34.2 GBのメモリ
- 13 EC2コンピューティングユニット(それぞれ3.25 EC2コンピューティングユニットを備えた4つの仮想コア)
- 850 GBのインスタンスストレージ
- 64ビットプラットフォーム
- I / Oパフォーマンス:高
- Mapnik、4スレッド
- これらのベンチマークに基づくPostgresqlの設定
- すべてのレイヤーにGiSTインデックスが設定されている
パフォーマンスを向上させるための私のアイデアのいくつか:
- 機能を簡素化する
- ウォータータイルをレンダリングしない-openlayersでロードすると、ロードの失敗を青色に設定することができます
- 世界の水の特徴をさまざまなセクションに分割し、mapnikに境界を明示します。たとえば、北アメリカから水フィーチャを分割した場合、オーストラリアのタイルをMapnikが生成しているときに、北アメリカにクエリを実行して、そのフィーチャがタイルにあるかどうかを確認しないでください。
- 私の2番目のアイデアはもう少しクレイジーです。Mapnikは、処理するフィーチャを見つけるために各タイルに対して空間クエリを実行するため、すべてのレイヤーに対してこのクエリを事前に実行できます。これにより、処理能力がいくらか節約されると思います。
私の質問: タイルレンダリングを最適化するために他に何ができますか?
「PostGISでのレンダリングの最適化」github.com/mapnik/mapnik/wiki/OptimizeRenderingWithPostGISのヒントをご覧になりましたか?
—
Mapperz
こんにちはマッパーズ。はい、データベースに水フィーチャのみをロードするようにしました。したがって、すべてのポリゴンとラインは既にプレフィルターされており、ウォーターフィーチャです。また、データベースをバキュームし、提案されたインデックスを適用しました。
こんにちは、私は以前にMapnikを使用したことがありませんが、一部のズームレベルまたは特定の領域でタイルをキャッシュできる場合は、パフォーマンスが向上します。
—
だんご2012年