State Connection
Sebelum kita bahas lebih lanjut alangkah lebih baiknya perlu untuk mengetahui apa saja state connection yang diketahui oleh Linux dan bagaimana prosesnya
Pada sisi Server ada 5 phase yaitu LISTEN, SYN_RECD, ESTABLISHED, CLOSE_WAIT dan LAST_ACK. Listen berarti service kita telah menyala dan sedang Listen untuk menunggu request masuk. Kemudian Jika ada request masuk pertama-tama adalah menerima SYN paket dari client. Jika server dapat menerima maka server akan meresponse SYN+ACK. Pada kondisi ini server akan mencoba mengirimkan paket berulan-ulang jika Server tidak mendapatkan ACK dari client karena statusnya masih half open connection hal ini dikarenakan feature dari jaringan protocol TCP/IP untuk melakukan retransmission jika sapa tau terjadi kegagalan. Cara mengechek berapa jumlah system kita melakukan re-transmission adalah
cat /proc/sys/net/ipv4/tcp_synack_retriesDefaultnya adalah selama 5 kali dan akan diabaikan dan tidak dilanjutkan jika sudah 5 minutes tidak ada response. Apabila kondisinya Server mendapatkan pesan ACK maka pada phase ini dinamakan SYN_RECD. Kemudian proses komunikasi bisa dilakukan dengan ditandai ESTABLISHED. Secara default ESTABLISHED akan berakhir jika client memutuskan untuk menyelesaikan dengan mengirimkan paket FIN. Akan tetapi jika hal tersebut tidak terjadi maka kita harus menunggu selama 432000 seconds (selama 5 hari). Nilai itu adalah default dari linux, apabila masih tidak ada aktifitas maka firewall kita akan memutuskanya. Untuk melihatnya ada di
cat /proc/sys/net/netfilter/nf_contrack_tcp_timeout_establishedKemudian adalah phase CLOSE_WAIT. Pada phase ini server akan menunggu selama 60 seconds default dari linuxnya
cat /proc/sys/net/netfilter/ip_conntrack_tcp_timeout_time_waitJika kita sudah tau ternyata dalam proses komunikasi ada masa tunggunya maka anda bisa bayangkan jika didalam server kita sudah penuh dan tidak dapat membuat connection lagi. Maka server tersebut akan tidak dapat melayani layanan selama dari waktu tunggu tersebut. Mending kalo hanya suruh nunggu 2 menit untuk menuggu waktu time wait. Jika ternyata menunggu untuk waktu yang established. Maka bisa dibayangkan server kita akan available selama 5 hari.
Kenapa membuat connection dibatasi, siapa sih yang membatasi
Secara default setiap kali kita membuat connection kita butuh yang namanya file handle. Artinya kita akan membuat yang namanya file. Sekarang didalam linux ada batasan dalam pembuatan file.
[tri@localhost ~]$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 15446 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 1024 virtual memory (kbytes, -v) unlimited file locks (-x) unlimitedBisa dilihat total open files hanyalah 1024. Dari sini sudah jelas kita hanya mempunyai kapasitas tidak lebih dari 1024 connection yang dapat mengakses Server kita dengan user tri. Kenapa saya bilang tidak lebih, saya ulangi kembali karena setiap kita membuat state baru seperti SYN_RECD, ESTABLISHED atau CLOSE_WAIT kita sedang melakukan open file. Oleh karena itu kita perlu memonitornya, Apalagi jika ada state connection yang sudah waktunya closed tapi dia masih hang in on disana. Contohnya adalah koneksi ke Database dan kita tidak melakukan close connection di programnya. Itu akan mempengaruhi jumlah user yang dapat mengakses ke server kita. Karena state connection nya dipakai percuma untuk koneksi ke database yang mana sudah tidak dibutuhkan lagi.
0 comments:
Posting Komentar