Tôi hiện đang cố gắng kết xuất Nước (3.198.333 hồ sơ) và biên giới thế giới chi tiết (đã xử lý_p) cho thế giới. Tôi thành công trong việc kết xuất cả hai lớp, nhưng tôi không hài lòng với hiệu suất.
Thiết lập hiện tại của tôi là như sau:
- Ví dụ Amazon EC2 (m2.2xlarge)
- Bộ nhớ 34,2 GB
- 13 đơn vị tính toán EC2 (4 lõi ảo với 3,25 đơn vị tính toán EC2 mỗi đơn vị)
- Dung lượng lưu trữ 850 GB
- Nền tảng 64 bit
- Hiệu suất I / O: Cao
- Mapnik, 4 chủ đề
- Cài đặt Postgresql dựa trên các điểm chuẩn này
- Chỉ số GiST thay thế cho tất cả các lớp của tôi
Một số ý tưởng của tôi để tăng hiệu suất :
- Đơn giản hóa các tính năng của tôi
- Không kết xuất gạch nước - khi tải bằng công cụ mở có thể đặt lỗi tải thành màu xanh lam
- Chia các tính năng nước trên thế giới thành nhiều phần khác nhau và nói rõ ràng về giới hạn của mapnik. Ví dụ: nếu tôi tách các tính năng nước từ Bắc Mỹ, khi Mapnik đang tạo các ô cho Úc, thì không nên truy vấn Bắc Mỹ để xem có bất kỳ tính năng nào của nó có trong các ô không.
- Ý tưởng thứ hai của tôi là một chút điên rồ hơn. Vì Mapnik thực hiện truy vấn không gian cho từng ô để tìm các tính năng cần xử lý, tôi có thể thực hiện truy vấn này trước cho tất cả các lớp của mình. Tôi sẽ giả định rằng điều này sẽ tiết kiệm một số sức mạnh xử lý.
Câu hỏi của tôi: Tôi có thể làm gì khác để tối ưu hóa kết xuất gạch?
Bạn đã xem "Tối ưu hóa kết xuất với PostGIS" github.com/mapnik/mapnik/wiki/OptizesRenderingWithPostGIS cho một số mẹo?
—
Mapperz
Xin chào Mapperz. Có, tôi chắc chắn chỉ tải các tính năng nước vào cơ sở dữ liệu của mình. Vì vậy, tất cả các đa giác & dòng của tôi đã được lọc trước và là các tính năng nước. Tôi cũng hút bụi cơ sở dữ liệu của mình và áp dụng các chỉ mục được đề xuất.
Xin chào, trước đây tôi chưa sử dụng Mapnik nhưng nếu có thể lưu trữ các ô xếp ở một số mức thu phóng hoặc đối với một số khu vực nhất định, nó sẽ cải thiện hiệu suất.
—
dango