Wednesday, December 17, 2014

ArcGIS Server, Optimizing Map Services part 1

Map services, baik yang menggunakan ArcGIS server, Geoserver, Map Server, Mapguide, dan lain-lain memerlukan memory dan processing power agar dapat berfungsi sebagaimana peruntukannya. Namun demikian ketersediaan memory (RAM) dan processing power (CPU processor) di Server kita pada umumnya terbatas, sehingga kita perlu memikirkan strategi agar Map Services yang kita publish dapat melayani kebutuhan user secara efektif dan efisien (bahasa sederhananya, tidak lemot).

Untuk penggunaan ArcGIS Server sebagai Map Services engine, ada tiga teknik atau fasilitas yang dapat digunakan untuk mengoptimalisasi ketersediaan Server Resources (RAM dan CPU) dengan goals dari Map Services yang kita bangun sehingga Map Services yang dipublish dapat berfungsi sebagaimana mestinya dan tidak lemot.

1. Pooling

Pooling pada dasarnya adalah pengaturan pembatasan waktu untuk sebuah request dari client ke GIS Server untuk melaksanakan perintah tertentu terhadap Map Services. Request ini akan dilaksanakan oleh GIS Server dalam sebuah "instance". Instance dapat diatur untuk melayani satu koneksi client untuk setiap request/query, atau lebih. Ketika sebuah request masuk ke server, server akan melihat ke instance yang tersedia dan kemudian menempatkan request tersebut ke instance untuk kemudian diproses/eksekusi lalu hasilnya dikirimkan ke client. Setelah request dipenuhi, instance akan kembali berstatus "free" untuk melayani request selanjutnya yang datang. Jika request yang masuk dalam waktu yang bersamaan ada banyak, dan instance yang sedang berjalan masih "busy" memproses sebuah request, server akan menciptakan instance baru guna menampung request tersebut. Permasalahannya adalah apabila request yang masuk jumlahnya bejibun dan dan instance yang ada sudah terpakai semua, maka yang terjadi adalah request itu harus menunggu sampai ada proses di salah satu instance selesai. Hal inilah yang sering kita kenal dengan istilah "LEMOT".

Untuk mencegah kelemotan ini berlanjut dan membahayakan umur hardware server, kita perlu mengatur bagaimana instance memproses request dalam skema "pooling". Instance perlu diatur karena instance berkaitan langsung dengan penggunaan RAM dan CPU di dalam server.

Pooling diatur ketika kita mempublish semua Map Services baru atau meng-edit Map Services Eksisting.


Dalam Konfigurasi pooling, ada dua komponen utama, yaitu jumlah instance per machine dan Service Timeouts.

Instance per machine adalah jumlah minimum dan maksimum instance yang dialokasikan ke sebuah map service. Dalam gambar diatas, minimum instance di set ke 1 dan maksimum instance ke angka 2. Jika kita mempunyai dua server/machine yang bergabung dalam sebuah ArcGIS Server site (clustering configuration), maka instance minimum berarti 2 dan instance maksimum adalah 4 (karena diitung per machine). Aturan untuk pengaturan jumlah instance ini adalah, jika sebuah map services jarang diakses, maka kita cukup berikan angka 0 untuk minimum instance guna menghindari alokasi instance ke Map service yang tidak perlu. Jangan khawatir, Server secara otomatis akan mengalokasikan sebuah instance ke Map service ini apabila nanti ada request ke Map Service. Adapun untuk maksimum instance, apabila request ke Map Service hanya operasi sederhana seperti zoom dan pan, maka setingnya pun tidak usah terlalu banyak, cukup 1 atau 2 instance. Sebagaimana ditulis diawal, satu instance dapat digunakan oleh beberapa client, sehingga untuk request sederhana zoom dan pan, client yang antri tidak akan menunggu lama untuk terbebasnya sebuah instance sehingga cukup aman untuk diberikan satu atau dua instance.

Service Timeouts adalah konfigurasi waktu maksimal sebuah client untuk memperoleh dan menggunakan instance. ada tiga komponen, waktu penggunaan sebuah service, waktu tunggu untuk memperoleh service dan alokasi waktu tunggu sebuah client dalam menggunakan instance. Untuk map service yang digunakan secara sederhana (zoom dan pan) jangan berikan waktu tunggu untuk memperoleh service terlalu lama, cukup 10-15 detik agar instance bisa secepatnya free dan dimanfaatkan request/client yang mengantri. Untuk waktu penggunaan service akan tergantung pada jenis request, kalau request sederhana zoom dan pan berikan waktu yang sedikit, sedangkan untuk request berat berikan waktu lebih lama. Hal ini untuk mengantisipasi agar request tidak dibatalkan oleh server karena melebihi batas waktu timeouts. demikian pula untuk Idle Instance time, bergantung pada jenis request yang dikenakan pada map service,

2. Isolation

Isolation adalah pengaturan bagaimana instance bekerja dalam sebuah proses. Ada dua jenis isolation, Low isolation dan High Isolation. Low isolation berarti dalam satu proses dapat memuat lebih dari satu instance, sedangkan high isolation adalah sebaliknya. Untuk konfigurasi high isolation, kelebihannya adalah kecil kemungkinan terjadinya failure dalam pemenuhan request karena setiap instance diberikan proses yang terpisah, sedangkan untuk low isolation, ketika satu proses bermasalah, seluruh instance yang bernaung dibawah proses tersebut akan mengalami failure dan down. Namun demikian high isolation memerlukan lebih banyak konsumsi RAM karena proses yang terjadi lebih banyak.


Recycling setting mengatur untuk pe-nonaktif-an Map services guna membersihkan memory dan menjamin performa dan stabilitas services. Adapun health settings adalah setingan untuk mengecek koneksi data di Map services ke instance untuk memastikan mereka masih terkoneksi.

3. Caching

Caching adalah proses pembuatan gambar peta temporer yang disimpan dalam storage server yang dapat diakses oleh client secara berulang. Adanya caching memungkinkan seluruh request peta tidak masuk ke dalam database, sehingga meringankan kinerja database dan client bisa lebih cepat memperoleh informasi yang diminta. Namun demikian, caching mengharuskan adanya ruang ekstra storage untuk menyimpan cache. Selain itu caching juga kurang efektif untuk map services yang datanya sering diupdate karena cache sifatnya tetap dan tidak tersinkronisasi dengan data, sehingga jika ada update, proses caching harus diulang dan biasanya memakan waktu lama dan memberatkan kinerja server.


Pembuatan cache idealnya dilakukan di ArcCatalog (dekstop) daripada di ArcGIS Manager (Browser web) karena biasanya dekstop client lebih powerful dan mampu menangani operasi berat dibanding eksekusi via web client.



Demikian sedikit tips tentang optimalisasi Map Services agar tidak mudah lemot dan bisa memberdayakan secara optimal hardware yang tersedia.