April 18, 2012

Apache Tomcat Java lang Out of Memory

tomcat server
Secara default Apache tomcat hanya bisa memakai ram atau memory yang tersedia sebesar 32 Mbyte, ini dapat menjadi masalah untuk kita ketika banyak akses yang masuk ke server kita atau bisa dikatakan akses yang datang melebihi kapasitas memory yang secara default bisa dipakai oleh tomcat.

Masalah yang timbul berupa server crash karena sudah tidak ada lagi sisa memory yang bisa dipakai, server menjadi down dan harus di start kembali, ini tentu sangat mengganggu, apalagi  jika server tersebut adalah aplikasi yang pada saat tertentu mempunyai kinerja yang sangat tinggi.

Hal ini pernah menjadi pengalaman saya ketika server apache tomcat yang berisi aplikasi input untuk suatu perusahaan yang kebetulan juga berada dalam pemeliharaan saya, tiba-tiba sering hang atau crash dan harus di restart secara manual. Setelah melihat log error yang ada terlihat pesan yang berbunyi “java lang out of memory”, artinya yang menurut saya adalah tidak ada memory lagi yang bisa dipakai untuk menjalankan proses sehingga server menjadi crash dan down.

Setelah cukup melelahkan mereboot setiap 2 menit sekali, dan suasana mulai agak tenang, berselancarlah saya dengan mbah google, ternyata sangat sulit menemukan permasalahan yang timbul. Setelah agak lama mencari (mungkin sekitar 4 atau 6 jam), saya menemukan tulisan yang bercerita tentang file setenv.sh yang dipakai untuk menaikkan memory yang bisa dipakai oleh apache tomcat, dengan kata lain untuk setting environment pada tomcat.

Menurut isi konfigurasi dari catalina.sh, file tersebut terletak di /path/tomcat/bin,  tetapi ketika saya lihat tidak ada nama file yang dimaksud, akhirnya saya memutuskan untuk mebuatnya.

# vi /path/to/tomcat/bin/setenv.sh

JAVA_OPTS=” -Xms32m  –Xmx512m –Xss512k $JAVA_OPTS –Djava.awt.headless=true”

Simpan dan kemudian coba restart tomcat.

Konfigurasi diatas jika dilihat dari file catalina.sh maksudnya menurut saya pribadi adalah menset environment yang tersedia pada system untuk server tomcat, dalam hal ini menaikkan memory yang bisa terpakai oleh apache tomcat. Terlihat minimal memory yang bisa dipakai sebesar 32Mbyte dan Maksimal 512 Mbyte (besaran ini tergantung keperluan dan sisa memory yang bisa dipakai).

Sebagai acuan, ram atau memory yang terpasang di server ini adalah 1 GByte .

Karena hari sudah malam dan akses juga tidak terlalu padat, konfigurasi tersebut belum teruji, pulanglah saya dengan pikiran “apakah ini akan berhasil diesok hari?”, setelah beristirahat dan tidur , besoknya langsung berangkat kerja untuk melihat keadaan server.

Ternyata konfgurasi tersebut berjalan baik, dan walaupun kinerja tomcat sangat tinggi, server tidak crash ataupun down. Artinya masalah yang sebelumnya dialami terlah terselesaikan, dengan kata lain masalah telah “SOLVED”.

Itulah pengalaman yang saya rasakan, dan mungkin bagi anda yang mengalami hal yang sama bisa mencoba solusi seperti ini, dan tinggalkanlah komentar agar bisa dijadikan sebagai pembanding.

Selamat mencoba danTerima kasih.

No comments:

Post a Comment