• Tidak ada hasil yang ditemukan

HASIL DAN PEMBAHASAN Lingkungan Pengujian

Spesifikasi Server

Server untuk aplikasi web GIS memiliki prosesor dengan arsitektur 64-bit (x86-64). Jumlah RAM pada server ini adalah 2 GB.

Scale-up perlu dilakukan pada server untuk memanfaatkan jumlah RAM ini secara optimal. Berikut adalah spesifikasi server ini.

Name: Extron NetSystem E400

CPU: Intel Xeon E5606 Quad Core 2.13 GHz RAM: UDIMM DDR3 2 GB - 1333 ECC

Harddisk: SATA 500 GB, 7200 RPM Network: 2x Gigabit Ethernet NIC

Kecepatan tulis dan baca harddisk pada server adalah 88 MB/s dan 107 MB/s. Metode pengukuran kecepatan harddisk dilakukan menggunakan program 'dd' dengan perintah di bawah ini.

# dd if=/dev/zero of=bigfile bs=8k \ count=500000 && sync

# dd if=bigfile of=/dev/null bs=8k

Nilai count didapat dari jumlah total RAM dikalikan dua, kemudian dibagi dengan bs

(blocksize) sebesar 8 kB. Tujuan dari besar file

dua kali dari jumlah RAM adalah untuk menghindari disk caching ke RAM.

S

istem Operasi

Sistem operasi yang dipilih untuk server ini adalah Debian GNU/Linux 6.0, kernel 2.6.32-5-amd64. Debian merupakan distribusi GNU/Linux yang banyak digunakan sebagai server web. Menurut data survei bulan Juni 2011 dari W3Techs, 9.3% situs web tersibuk di dunia memakai Debian.

Perangkat lunak server memakai distribusi 64-bit. Keuntungan arsitektur 64-bit dari segi kinerja adalah kecepatan server akan meningkat. Kinerja server Apache meningkat 39.2% dengan menggunakan perangkat lunak 64-bit (Tonkikh 2006).

Server hanya diinstal perangkat lunak yang dibutuhkan. Semua paket aplikasi diunduh dari repositori resmi Debian dengan pilihan distribusi versi stable. Aplikasi server yang dipakai pada server ini antara lain:

• PostgreSQL 8.4.7 • PostGIS 1.5.1 • Apache 2.2.16 • PHP 5.3.3 • MapServer 5.6.5 • TileCache 2.03 Waktu E ksekusi PHP

Nilai waktu eksekusi maksimum skrip PHP

default adalah 30 detik. Karena permintaan data spasial yang berukuran besar, maka waktu 30 detik ini terkadang tidak cukup, sehingga banyak permintaan yang terhenti di tengah jalan dan mengakibatkan kegagalan akses. Untuk mengatasinya, opsi waktu eksekusi maksimum ditambah menjadi 60 detik. Berikut adalah perintah untuk mengubah opsi ini.

# editor /etc/php5/apache2/php.ini max_execution_time = 60

Konsumsi RAM

Konsumsi RAM aplikasi server diukur dengan menggunakan program 'htop', yaitu dengan mencatat nilai tertinggi pada kolom RES (resident memory) untuk setiap proses aplikasi server Apache dan PostgreSQL. Konsumsi RAM server saat idle adalah 54 MB, sedangkan konsumsi RAM untuk satu proses aplikasi server setelah melayani permintaan untuk halaman peta dan indeks pada tingkat konkurensi 16 dapat dilihat pada Tabel 1.

Opsi benchmark dibedakan antara halaman peta dengan halaman indeks. Benchmark pada halaman peta hanya dilakukan sebanyak empat kali permintaan karena loading halaman ini cukup lama, sedangkan benchmark pada halaman indeks dilakukan selama 60 detik.

Benchmark dilakukan sebanyak tiga kali ulangan pada tiap tingkat konkurensi, kemudian diambil rataannya. Di antara tiap ulangan, diberikan jeda 30 detik agar jumlah proses anak server PostgreSQL dan Apache kembali normal. Server tidak di-restart supaya cache aplikasi web tetap ada. Jika cache hilang, kinerja server akan menurun dan mempengaruhi hasil

benchmark. Berikut adalah contoh skrip shell

untuk mengotomatisasi prosedur benchmark

seperti di atas. #!/bin/bash MAP="http://localhost/scibun/map.php" IDX="http://localhost/scibun/index.php" for c in 4 8 16 32 64 128 256 512; do echo "konkurensi = $c" for i in 1 2 3; do echo " ulangan ke-$i"

siege -b -c $c $MAP -r 4 2>>map.txt sleep 30

siege -b -c $c $IDX -t 60s 2>>idx.txt sleep 30

done done

HASIL DAN PEMBAHASAN Lingkungan Pengujian

Spesifikasi Server

Server untuk aplikasi web GIS memiliki prosesor dengan arsitektur 64-bit (x86-64). Jumlah RAM pada server ini adalah 2 GB.

Scale-up perlu dilakukan pada server untuk memanfaatkan jumlah RAM ini secara optimal. Berikut adalah spesifikasi server ini.

Name: Extron NetSystem E400

CPU: Intel Xeon E5606 Quad Core 2.13 GHz RAM: UDIMM DDR3 2 GB - 1333 ECC

Harddisk: SATA 500 GB, 7200 RPM Network: 2x Gigabit Ethernet NIC

Kecepatan tulis dan baca harddisk pada server adalah 88 MB/s dan 107 MB/s. Metode pengukuran kecepatan harddisk dilakukan menggunakan program 'dd' dengan perintah di bawah ini.

# dd if=/dev/zero of=bigfile bs=8k \ count=500000 && sync

# dd if=bigfile of=/dev/null bs=8k

Nilai count didapat dari jumlah total RAM dikalikan dua, kemudian dibagi dengan bs

(blocksize) sebesar 8 kB. Tujuan dari besar file

dua kali dari jumlah RAM adalah untuk menghindari disk caching ke RAM.

S

istem Operasi

Sistem operasi yang dipilih untuk server ini adalah Debian GNU/Linux 6.0, kernel 2.6.32-5-amd64. Debian merupakan distribusi GNU/Linux yang banyak digunakan sebagai server web. Menurut data survei bulan Juni 2011 dari W3Techs, 9.3% situs web tersibuk di dunia memakai Debian.

Perangkat lunak server memakai distribusi 64-bit. Keuntungan arsitektur 64-bit dari segi kinerja adalah kecepatan server akan meningkat. Kinerja server Apache meningkat 39.2% dengan menggunakan perangkat lunak 64-bit (Tonkikh 2006).

Server hanya diinstal perangkat lunak yang dibutuhkan. Semua paket aplikasi diunduh dari repositori resmi Debian dengan pilihan distribusi versi stable. Aplikasi server yang dipakai pada server ini antara lain:

• PostgreSQL 8.4.7 • PostGIS 1.5.1 • Apache 2.2.16 • PHP 5.3.3 • MapServer 5.6.5 • TileCache 2.03 Waktu E ksekusi PHP

Nilai waktu eksekusi maksimum skrip PHP

default adalah 30 detik. Karena permintaan data spasial yang berukuran besar, maka waktu 30 detik ini terkadang tidak cukup, sehingga banyak permintaan yang terhenti di tengah jalan dan mengakibatkan kegagalan akses. Untuk mengatasinya, opsi waktu eksekusi maksimum ditambah menjadi 60 detik. Berikut adalah perintah untuk mengubah opsi ini.

# editor /etc/php5/apache2/php.ini max_execution_time = 60

Konsumsi RAM

Konsumsi RAM aplikasi server diukur dengan menggunakan program 'htop', yaitu dengan mencatat nilai tertinggi pada kolom RES (resident memory) untuk setiap proses aplikasi server Apache dan PostgreSQL. Konsumsi RAM server saat idle adalah 54 MB, sedangkan konsumsi RAM untuk satu proses aplikasi server setelah melayani permintaan untuk halaman peta dan indeks pada tingkat konkurensi 16 dapat dilihat pada Tabel 1.

Tabel 1. Konsumsi RAM per proses Halaman PostgreSQL Apache

Peta 50 MB 90 MB

Indeks 6 MB 16 MB

Kinerja Awal

Kinerja awal server secara keseluruhan dapat dilihat pada Tabel 2. Server hanya mampu melayani permintaan halaman peta dengan baik sampai tingkat konkurensi 16. Kinerja server menurun drastis pada tingkat konkurensi 32. Adapun untuk halaman indeks, server masih mampu melayani permintaan untuk tingkat konkurensi yang lebih tinggi lagi.

Tabel 2. Kinerja server awal

Konkurensi Peta Indeks

trx/s gagal trx/s gagal 4 0.31 0% 78.81 0% 8 0.31 0% 80.48 0% 16 0.31 0% 80.12 0% 32 0.05 8% 79.67 0% PostgreSQL

Konfigurasi server PostgreSQL terletak pada

/etc/postgresql/8.4/main/postgresql.conf. Penjelasan dari PostgreSQL Global Develop-ment Group (2009) mengenai opsi-opsi yang akan dikonfigurasi adalah sebagai berikut:

shared_buffers: Opsi ini mengatur jumlah RAM yang dialokasikan sebagai shared buffer. Nilai yang disarankan adalah 25% dari jumlah RAM yang tersedia. Nilai awalnya adalah 24 MB.

effective_cache_size: Opsi ini menunjuk-kan ukuran cache yang tersedia bagi query planner. Jika cache mencukupi, maka akan digunakan index scan daripada sequential scan biasa. Nilai awalnya adalah 128 MB.

max_connections: Opsi ini mengatur jumlah koneksi maksimum yang dapat dilayani oleh server dalam satu waktu. Opsi ini digunakan untuk meminimalkan disk swapping. Nilai awalnya adalah 100.

work_mem: Opsi ini mengatur jumlah RAM yang dialokasikan untuk operasi sorting

internal. Nilai awalnya adalah 1 MB.

Scale-up

shared_buffers = 256MB effective_cache_size = 768MB max_connections = 32

Konfigurasi PostgreSQL perlu dilakukan

scale-up untuk memanfaatkan RAM pada server secara optimal. Alokasi RAM server dapat dilihat pada Gambar 2. Jumlah RAM yang dialokasikan untuk PostgreSQL dan sistem operasi adalah 1024 MB. Nilai shared_buffers

adalah 25%-nya, yaitu 256 MB. Nilai

effective_cache_size adalah 75%-nya, yaitu 768 MB (Smith 2010). Nilai max_connections

didapat dari jumlah alokasi RAM untuk PostgreSQL dibagi dengan rataan konsumsi RAM per proses PostgreSQL (Temme 2007). Jika tidak terjadi swapping, maka nilai ini dapat dinaikkan lagi.

koneksimax= alokasi RAM konsumsi RAM per proses

Dari rumus di atas, didapat nilai

max_connections: 768 MB / ((50+6)/2) MB = 768 / 28 ≈ 27. Setelah dilakukan benchmark, ternyata masih ada RAM yang tersisa, sehingga nilai max_connections dapat dinaikkan lagi. Pada saat max_connections 32, penggunaan RAM sudah optimal tanpa terjadi swapping.

Hasil konfigurasi ini dapat dilihat pada Tabel 3 dan Gambar 3. Kinerja server secara umum sama seperti kondisi awal. Akan tetapi, server sekarang mampu melayani permintaan halaman peta dengan baik sampai tingkat konkurensi 256. Artinya, konfigurasi scale-up

ini telah berhasil memperbaiki kemampuan server dalam melayani permintaan pada konkurensi yang lebih tinggi.

Tabel 3. Kinerja server setelah scale-up

PostgreSQL

Konkurensi Peta Indeks

trx/s gagal trx/s gagal 4 0.31 0% 78.88 0% 8 0.31 0% 80.61 0% 16 0.31 0% 80.07 0% 32 0.62 0% 79.83 0% 64 1.21 0% 79.28 0% 128 2.21 0% 73.45 0% 256 4.17 0% 70.42 0% 512 6.82 10% 71.78 16%

Koneksi Maksimum

max_connections = 100

Penambahan jumlah koneksi belum tentu meningkatkan kinerja server. Kinerja server justru turun menjadi 0.05 transaction/second

pada tingkat konkurensi 32. Jumlah koneksi yang melebihi kapasitas RAM ini akan menyebabkan swapping berlebihan. Akibatnya, server menjadi sangat lambat, karena prosesor harus berulang kali mengambil data dari swap disk.

Jadi, jumlah koneksi perlu dibatasi agar server tetap berjalan optimal. Jika permintaan melebihi jumlah koneksi, maka kelebihan permintaan tersebut langsung ditolak, sehingga tidak mengganggu jalannya permintaan lain yang sedang diproses.

Memori Kerja

work_mem = 8MB

Peningkatan memori kerja dari 1 MB menjadi 8 MB tidak meningkatkan kinerja server. Hal ini disebabkan query data geografis ke server PostgreSQL tidak terdapat operasi

sorting yang kompleks.

Apache

Konfigurasi utama server web Apache terletak pada /etc/apache2/apache2.conf. Penjelasan dari Apache Software Foundation (2008) mengenai opsi-opsi yang akan dikonfigurasi adalah sebagai berikut:

MaxClients: Opsi ini mengatur jumlah koneksi maksimum yang dapat diproses

secara konkuren. Nilai ini juga menunjukkan jumlah proses anak maksimum yang dapat dibuat untuk melayani permintaan. Nilai awalnya adalah 100.

KeepAliveTimeout: Opsi ini mengatur berapa detik server akan menunggu untuk melayani permintaan selanjutnya dari koneksi yang sama, sebelum koneksi tersebut diputus. Nilai awalnya adalah 15.

DirectoryIndex: Opsi ini berisi urutan daftar berkas yang akan ditampilkan jika klien mengakses sebuah direktori. Urutan awalnya adalah: index.html, index.cgi, index.pl, index.php, index.xhtml, dan index.htm.

Scale-up

MaxClients 64

Jumlah RAM yang dialokasikan untuk server Apache adalah 1024 MB. Satu proses Apache memerlukan jumlah RAM sebesar 16 MB untuk melayani halaman indeks. Jumlah klien maksimum ini didapat dari alokasi RAM untuk Apache dibagi dengan dengan konsumsi RAM per proses Apache (Temme 2007). Hasil perhitungan untuk jumlah klien maksimum adalah sebagai berikut: 1024 MB / 16 MB = 64.

Hasil scale-up dapat dilihat pada Tabel 4. Kinerja server meningkat secara signifikan pada tingkat konkurensi di atas 64. Kinerja halaman peta dan indeks masing-masing meningkat 5% dan 10%.

Tabel 4. Kinerja server setelah scale-up Apache

Konkurensi Peta Indeks

trx/s gagal trx/s gagal 64 1.21 0% 78.48 0% 128 2.35 0% 78.93 0% 256 4.50 0% 78.85 1% 512 6.93 18% 78.77 16% Keep Alive KeepAliveTimeout 2

Penurunan waktu KeepAliveTimeout hanya sedikit meningkatkan kinerja server. Hasilnya dapat dilihat pada Tabel 5. Kinerja halaman peta dan indeks masing-masing meningkat 2% dan 0.3% pada tingkat konkurensi 64 ke atas.

Hal ini dikarenakan benchmark server hanya dilakukan di localhost saja, sehingga efek jaringan tidak terlihat. KeepAlive sangat berguna bagi halaman yang memiliki banyak objek berukuran kecil dan bagi klien yang memiliki koneksi internet yang lambat.

Gambar 3. Kinerja server sebelum dan setelah

scale-up PostgreSQL untuk halaman peta.

4 8 16 32 64 128 256 512 0 1 2 3 4 5 6 7 8 sebelum sesudah konkurensi tr x / s e c

Tabel 5. Kinerja server setelah menurunkan

KeepAliveTimeout Apache

Konkurensi Peta Indeks

trx/s gagal trx/s gagal 64 1.21 0% 79.00 0% 128 2.37 0% 79.13 0% 256 4.51 0% 78.96 1% 512 7.42 14% 78.78 9% Directory Index # editor /etc/apache2/mod-enabled/dir.conf DirectoryIndex index.php index.html

Konfigurasi ini hanya berlaku untuk halaman indeks. Biasanya klien mengakses halaman hanya dengan menuliskan nama direktori saja, misalnya http://localhost/scibun/. Server kemudian melihat opsi ini untuk mencari berkas indeks yang akan ditampilkan. Karena nama berkas halaman indeks Scibun adalah 'index.php', maka server akan redirect menuju http://localhost/scibun/index.php.

Hasil konfigurasi ini meningkatkan kinerja halaman indeks yang diakses tidak secara langsung sebesar 0.4% pada tingkat konkurensi 128.

Mematikan Modul AutoIndex dan CGI

# a2dismod autoindex cgi

Modul Apache yang tidak digunakan sebaiknya dimatikan, karena modul ini akan menambah konsumsi RAM per proses Apache. Selain itu, modul AutoIndex juga dapat menjadi celah keamanan bagi server. Jika modul ini aktif, klien dapat menjelajahi isi direktori server dengan leluasa.

Hasil konfigurasi ini dapat dilihat pada Tabel 6. Kinerja halaman peta dan indeks masing-masing meningkat 5% dan 0.2% pada tingkat konkurensi 64 ke atas.

Tabel 6. Kinerja server setelah mematikan modul AutoIndex dan CGI Apache

Konkurensi Peta Indeks

trx/s gagal trx/s gagal 64 1.21 0% 79.42 0% 128 2.36 0% 79.19 0% 256 4.50 1% 79.22 1% 512 8.83 14% 78.57 9% Hasil Keseluruhan

Kinerja server Apache secara keseluruhan

meningkat setelah dilakukan beberapa konfigurasi di atas. Perbandingan kinerja server sebelum dan sesudah konfigurasi Apache untuk halaman peta dan indeks dapat dilihat masing-masing pada Gambar 4 dan 5. Kinerja server untuk halaman indeks juga menjadi lebih stabil pada tingkat konkurensi di atas 64.

PHP

Konfigurasi PHP secara umum dilakukan dengan cara mengubah kode sumber PHP Scibun. Pengubahan ini diusahakan seminimal mungkin tanpa mengubah fungsi aplikasi web. Selain itu juga ditambahkan modul caching

pada PHP untuk meningkatkan kinerja server. Gambar 4. Kinerja server setelah konfigurasi

Apache untuk halaman peta.

4 8 16 32 64 128 256 512 0 1 2 3 4 5 6 7 8 9 10 sebelum sesudah konkurensi tr x / s e c

Gambar 5. Kinerja server setelah konfigurasi Apache untuk halaman indeks.

4 8 16 32 64 128 256 512 64 66 68 70 72 74 76 78 80 82 sebelum sesudah konkurensi tr x / s e c

Perbaiki Pesan Peringatan

Setelah melihat log kesalahan Apache, ternyata Scibun banyak menimbulkan pesan peringatan. Hal ini disebabkan oleh penulisan kode PHP yang kurang cermat. Selain memperlambat kinerja server, berkas log kesalahan juga akan memenuhi harddisk jika server banyak diakses.

Cara mengatasinya adalah dengan memperbaiki kode PHP yang bermasalah. Namun karena keterbatasan waktu, diambil jalan pintas yaitu mengatur supaya PHP tidak melaporkan pesan peringatan. Potongan kode di bawah ini perlu ditambahkan pada bagian paling atas kode sumber PHP supaya hanya pesan kesalahan yang akan dilaporkan.

<?php

error_reporting(E_ERROR); ?>

Hasil perbaikan ini dapat dilihat pada Tabel 7. Kinerja halaman peta dan indeks masing-masing meningkat 1.6% dan 0.3% pada tingkat konkurensi 64 ke atas. Tapi perlu diingat bahwa solusi di atas adalah solusi sementara. Solusi yang ideal adalah dengan memperbaiki semua pesan peringatan sehingga kinerja dan keamanan aplikasi web meningkat.

Tabel 7. Kinerja server setelah memperbaiki pesan peringatan PHP

Konkurensi Peta Indeks

trx/s gagal trx/s gagal

64 1.21 0% 79.56 0%

128 2.36 0% 79.45 0%

256 4.51 0% 79.50 1%

512 9.38 16% 78.72 9%

Perbaiki Include Path

Setelah menelusuri system call Apache pada halaman indeks, ternyata ada satu include path

yang kurang tepat. Akibatnya PHP akan mencari berkas yang akan disertakan tersebut pada setiap include path. Hal ini tentunya membuang waktu prosesor tanpa guna. Untuk mengatasinya, include path perlu diperbaiki sesuai dengan path berkas yang akan disertakan.

Hasil perbaikan ini dapat dilihat pada Tabel 8. Kinerja halaman indeks meningkat 0.3% pada tingkat konkurensi 64 ke atas, sedangkan untuk halaman peta tidak ditemukan include path yang bermasalah.

Tabel 8. Kinerja server setelah memperbaiki

include path PHP Konkurensi Indeks trx/s gagal 64 79.74 0% 128 79.78 0% 256 79.69 1% 512 78.85 8% Op code Cache

PHP adalah interpreted language. Skrip PHP dikompilasi menjadi opcode untuk kemudian dijalankan oleh interpreter PHP. Hasil kompilasi ini perlu disimpan ke dalam suatu cache, sehingga server tidak perlu melakukan kompilasi ulang setiap kali halaman web diakses.

Salah satu implementasi opcode cache untuk PHP adalah APC (Alternative PHP Cache). APC akan menyimpan opcode hasil kompilasi ke dalam shared memory secara otomatis. Kinerja aplikasi web PHP semakin meningkat karena opcode disimpan di dalam RAM.

Pengaruh opcode cache pada Scibun dapat dilihat pada Tabel 9. Kinerja halaman peta dan indeks meningkat masing-masing 2% dan 76% pada tingkat konkurensi 64 sampai 256. Kinerja halaman peta hanya meningkat sedikit karena waktu prosesor lebih banyak digunakan untuk menggambar peta.

Tabel 9. Kinerja server setelah instalasi APC

Konkurensi Peta Indeks

trx/s gagal trx/s gagal 4 0.31 0% 146.36 0% 8 0.31 0% 154.08 0% 16 0.31 0% 153.56 0% 32 0.62 0% 152.74 0% 64 1.22 0% 138.29 0% 128 2.40 0% 141.99 0% 256 4.64 0% 141.33 1% 512 8.40 15% 141.82 5% Data Cache

APC juga dapat digunakan sebagai data cache. Tujuannya adalah untuk mengurangi koneksi ke database. Data langsung diambil dari cache, sehingga kinerja server meningkat. Ekstensi PHP 'XDebug' dapat digunakan untuk mengidentifikasi bagian kode yang menjadi

kode PHP untuk mengambil daftar provinsi dari

database yang telah ditambahkan dengan fungsi APC.

public function getProvinsiList() { $result = apc_fetch('provinsi_list'); if ($result === FALSE) {

$sql = 'SELECT * FROM provinsi'; $result = $this->db->getAll($sql); apc_store('provinsi_list', $result); }

return $result; }

Alamat URL (Uniform Resource Locator) gambar peta yang dihasilkan oleh PHP MapScript juga dapat disimpan dalam cache. Akan tetapi, hanya tampilan peta awal yang memungkinkan, karena tampilan peta selanjutnya selalu berubah seiring dengan masuknya query dari klien. Jadi teknik caching

peta ini hanya berlaku untuk gambar peta awal, tidak untuk keseluruhan halaman peta. Berikut adalah contoh potongan kode PHP untuk menggambar peta. if ($this->gbShowQueryResults) { $img = $this->map->drawQuery(); $url = $img->saveWebImage(); } else { $url = apc_fetch('initial_map_url'); if ($url === FALSE or !file_exists($WEBROOT.$url)) { $img = $this->map->draw(); $url = $img->saveWebImage(); apc_store('initial_map_url', $url); } }

Hasil implementasi data cache ini dapat dilihat pada Tabel 10. Kinerja rata-rata halaman peta meningkat tajam sebesar 128 kali lipat. Akan tetapi peningkatan kinerja ini hanya berlaku untuk halaman peta awal saja, yaitu peta administrasi. Teknik caching peta lainnya perlu dicari untuk mengatasi kekurangan tersebut.

Tabel 10. Kinerja server setelah implementasi

data cache Konkurensi Peta trx/s gagal 4 80.00 0% 8 80.00 0% 16 81.01 0% 32 81.53 0% 64 81.53 0% 128 81.01 0% 256 75.52 0% 512 72.97 5%

Hindari Include Once

Pernyataan include_once dan require_once

akan memeriksa dulu apakah berkas sudah pernah disertakan sebelumnya atau tidak. Pernyataan ini sebaiknya diganti dengan pernyataan include biasa. Ekstensi PHP 'inclued' dapat digunakan untuk menelusuri hierarki include aplikasi web PHP.

Hasil penggantian include_once menjadi

include dapat dilihat pada Tabel 11. Kinerja halaman peta dan indeks meningkat masing-masing 0.3% dan 0.9%.

Tabel 11. Kinerja server setelah penggantian

include_once

Konkurensi Peta Indeks

trx/s gagal trx/s gagal 4 80.00 0% 147.77 0% 8 80.00 0% 154.57 0% 16 81.01 0% 154.43 0% 32 81.53 0% 153.96 0% 64 81.79 0% 139.76 0% 128 80.88 0% 140.70 0% 256 76.82 0% 143.61 1% 512 73.48 4% 145.31 5%

Data Cache Parametrik

Fungsi untuk mengambil data dari database

kebanyakan memakai parameter untuk memilih data yang diinginkan. Parameter tersebut dipakai dalam klausa WHERE pada query. Hasil dari fungsi ini dapat disimpan dalam

cache dengan teknik data cache parametrik. Berikut contoh fungsi PHP untuk mengambil daftar kabupaten dari database berdasarkan parameter provinsi. Nama parameter ditambahkan pada nama cache APC untuk membedakannya dari cache yang berjenis sama tetapi dengan parameter yang berbeda.

public function getKabupatenList($idprov) { $result = apc_fetch('kab_list'.$idprov); if ($result === FALSE) {

$sql = 'SELECT * FROM kabupaten '. 'WHERE idprov = '.$idprov; $result = $this->db->getAll($sql); apc_store('kab_list'.$idprov, $result); }

return $result; }

Hasil implementasi data cache parametrik ini dapat dilihat pada Tabel 12. Kinerja halaman peta meningkat 41%. Persentase kegagalan server juga menurun dari 5% menjadi 1% pada tingkat konkurensi 512.

Tabel 12. Kinerja server setelah implementasi

data cache parametrik

Konkurensi Peta trx/s gagal 4 114.29 0% 8 114.29 0% 16 116.36 0% 32 117.43 0% 64 116.89 0% 128 116.89 0% 256 106.56 0% 512 95.87 1% Hasil Keseluruhan

APC sangat bermanfaat untuk meningkatkan kinerja server pada aplikasi web PHP. Pemakaian APC sebagai opcode dan data cache

dapat meningkatkan kinerja aplikasi web PHP dari dua sampai 100 kali lipat atau lebih. Perbandingan kinerja server sebelum dan sesudah konfigurasi PHP untuk halaman peta dan indeks dapat dilihat masing-masing pada Gambar 6 dan 7.

MapServer

Prosedur benchmark MapServer berbeda dari prosedur sebelumnya. Benchmark

MapServer menggunakan program 'shp2img'

untuk menguji kinerja mapfile. Program ini dijalankan dalam mode debug sebanyak lima kali ulangan. Berikut adalah contoh penggunaan program ini serta keluarannya.

$ shp2img -m administrasi.map \ -map_debug 3 -c 5 -o out.png We will draw 5 times...

msDrawMap(): Layer 0 (provinsi), 4.858s msDrawMap(): Layer 1 (kabupaten), 0.558s msDrawMap(): Layer 2 (jalan), 5.106s msDrawMap(): Drawing Label Cache, 0.000s msDrawMap() total time: 10.524s

msSaveImage() total time: 0.056s ...

Opsi-opsi mapfile yang akan dikonfigurasi dijelaskan pada daftar berikut ini (MapServer Team 2011).

PROCESSING "CLOSE_CONNECTION=DEFER": Jika opsi ini aktif, maka koneksi database

PostgreSQL akan tetap terbuka dan dapat dipakai ulang oleh layer MapServer selanjutnya.

PROJECTION: Opsi ini mengatur jenis proyeksi untuk objek peta dan layer. Proyeksi dapat ditentukan dengan kata kunci PROJ.4 atau melalui kode EPSG.

MAXSCALEDENOM: Jika penyebut skala peta melebihi nilai opsi ini, maka layer tidak akan digambar. Opsi ini dapat digunakan di dalam objek layer dan class.

Koneksi Database

Data geografis mapfile pada tiap layer

diambil dari database yang sama. Opsi

PROCESSING "CLOSE_CONNECTION=DEFER" harus diaktifkan supaya koneksi database tidak langsung ditutup jika MapServer telah selesai menggambar satu layer. Koneksi ini dapat dimanfaatkan ulang, sehingga layer selanjutnya tidak perlu membuat koneksi baru ke database

yang sama. Berikut adalah contoh penulisan opsi ini pada mapfile.

Gambar 7. Kinerja server setelah konfigurasi PHP untuk halaman indeks.

4 8 16 32 64 128 256 512 0 20 40 60 80 100 120 140 160 180 sebelum sesudah konkurensi tr x / s e c

Gambar 6. Kinerja server setelah konfigurasi PHP untuk halaman peta.

4 8 16 32 64 128 256 512 0 20 40 60 80 100 120 140 sebelum sesudah konkurensi tr x / s e c

LAYER ...

CONNECTIONTYPE POSTGIS DATA "the_geom FROM provinsi"

Dokumen terkait