Tunning GlassFish 3.1.2 Performance – Based On Experience In Production

Glassfish Application Server memiliki kemampuan yang sangat layak untuk dijadikan server production yang handal, cuma seperti pada umumnya pokoknya yang berbau java application server sepertinya harus di tunning. Kalau enggak bakalan lambat dan habis memory, atau ngehang di tengah jalan.

Oke di bawah ini pengalamanku setting dan tunning glassfish yang sudah aku gunakan di beberapa server production diantaranya :

  1. Official website Indonesia National Single Window
  2. Sistem Indonesia National Trade Repository (INTR)
  3. Official Website DJBC
  4. Portal Pengguna Jasa DJBC
  5. Portal Intranet DJBC

Awalnya memang agak berdarah-darah karena belum tau bagaimana mensetting yang sesuai dengan kapasitas server dan jumlah request user. Karena di Indonesia sepertinya belum ada tempat training dan trainer yang mengerti atau sudah ahli di Glassfish, maka seriiring berjalannya waktu, aku menemukan beberapa settingan yang harus dilakukan agar glassfish itu bisa tangguh. Dan di bawah ini aku share untuk para pembaca semua.

Oh iya, kenapa sih nggak menggunakan apache yang sudah jelas terbukti handal dalam urusan web server ? Jawabannya juga berdasar pengalaman yaitu intinya di tempat kerjaku disamping memproses jumlah request yang banyak, data yang diproses juga besar-besar banget. Entah aku yang salah setting atau gimana, pernah aku nyoba memproses 20 request data dengan parameter berupa xml berukuran 1mb s/d 3mb, koq ketika pakai php ngehang. Nah ketika pakai Java ada proses tetapi tidak ngehang … Yaaaa itulah cerita singkat kenapa pakai java…

Langsung aja, berikut yang harus ditunning ketika menggunakan glassfish. Spek server yang aku gunakan adalah prosesor 1 quadcore 3.0 Ghz, Ram 4GB, OS Ubuntu Server 10.04 LTS 64Bit, Jdk 1.6.

Tipikal request oleh user adalah akses website dengan respon berukuran rata-rata 900kb, hampir 1 mb per user.

Mengubah parameter JVM option

  1. -client -> -server
  2. -Xmx512m -> -Xmx3072m
  3. -XX:MaxPermSize=192m -> -XX:MaxPermSize=256m

Mengubah max open files, yaitu untuk menambah jumlah maximum file yang dihandle oleh OS. Ini berpengaruh sekali pada performa JVM ketika menangani file request yang besar

  1. /etc/security/limit.conf
    Open File
    *      soft      nofile    4096
    *      hard    nofile    40960

    User Process
    *      soft      nproc    10240
    *      hard    nproc    102400

  2. /etc/sysctl.conf
    # sysctl -w fs.file-max=4096
    # sysctl -p

Mengubah setingan http-thread-pool

  1. Max Queue Size: -1
  2. Max Thread Pool Size: 250

Mengubah File Cache pada network config http-listener-1

  1. Max Cache Size: 41943040
  2. Max File Count: 4096

Oke itu menurut pengalamanku settingan max untuk ram 4GB. Biasanya sih server untuk java web normalnya bergiga-giga. Tapi kadang spek server hanya ada yang itu saja. Dari angka-angka itu server mampu menangani concurrent user sampe 1000an dengan respon data sekitar 900an KB untuk tiap user, yang artinya 1000 user x 900KB = 900Mb trp, hampir 1 giga data diproses ke user.

Di atas angka 1000 user, server udah kolap… bias diakses tetapi lambat banget dan kandang sampai time out. Harus dilakukan tunning lagi sesuai dengan kebutuhan. Mungkin kelihatannya boros banget ya konsumsi memorynya, tapi kebutuhannya memang terjawab di sana.

Advertisements