Halo, pembaca setia! Bacaan hari ini untuk Kamu yang sering bergelut dengan sistem database dan backup, khususnya di lingkungan Windows. Hari ini, saya ingin berbagi pengalaman pribadi saya dalam mengatasi salah satu masalah yang sering muncul di setup PostgreSQL dengan PgBouncer, terutama saat beban kerja tinggi. Masalah ini bisa membuat sistem Anda terhenti tiba-tiba, banyak dari Anda yang pernah mengalaminya. Saya punya solusi berdasarkan pengalaman Saya, dan saya harap bisa membantu Anda meningkatkan performa sistem Anda. Mari kita mulai!
Mengapa Masalah Ini Penting untuk Diperhatikan?
Bayangkan Anda sedang mengelola server backup untuk data Microsoft 365 menggunakan Veeam. Semuanya berjalan lancar pada awalnya, tapi tiba-tiba koneksi mulai gagal. Pesan error muncul: “Tidak bisa terhubung ke database.” Penyebabnya? Kehabisan port TCP/IP yang tersedia di Windows. Ini bukan masalah sepele, karena di era digital sekarang, downtime bisa berarti kerugian bisnis yang besar. Menurut pengalaman saya, di lingkungan dengan ribuan koneksi per menit – seperti proxy controller di Veeam Backup for Microsoft 365 – hal ini sering terjadi.
PgBouncer adalah alat hebat yang bertindak sebagai pooler koneksi, mengurangi beban langsung ke PostgreSQL. Ia membantu menghemat sumber daya dengan reusing koneksi backend. Namun, masalah muncul saat aplikasi seperti Veeam membuka dan menutup koneksi ke PgBouncer dengan sangat cepat. Hasilnya? Port-port TCP di Windows kehabisan, terutama karena banyak yang terjebak di status “TIME_WAIT”. Jika tidak diatasi, ini bisa menghambat operasi bisnis Anda. Tapi jangan khawatir, solusi yang saya bagikan di sini bisa meningkatkan kapasitas koneksi hingga berkali-kali lipat. Saya yakin, setelah membaca ini, Anda akan termotivasi untuk mencobanya sendiri!
Memahami Akar Masalahnya
Mari kita pecah masalah ini menjadi bagian yang mudah dicerna. Pertama, apa itu port ephemeral? Di Windows, saat aplikasi melakukan koneksi keluar (outbound), sistem operasi secara otomatis mengalokasikan port sementara dari rentang dinamis, yaitu 49152 hingga 65535. Itu berarti ada sekitar 16.384 port yang tersedia secara default. Kedengarannya banyak, kan? Tapi di skenario beban tinggi, seperti backup data besar-besaran, port ini bisa habis dalam hitungan menit.
Penyebab utama kedua adalah status TIME_WAIT. Ketika sebuah koneksi TCP ditutup, port yang digunakan tidak langsung bebas. Ia masuk ke fase “istirahat” selama 240 detik (atau 4 menit) untuk memastikan tidak ada paket data tertinggal yang bisa mengganggu koneksi baru. Ini adalah fitur keamanan TCP/IP standar, tapi di lingkungan dengan “churn” koneksi tinggi – artinya banyak buka-tutup cepat – semua port bisa terjebak di TIME_WAIT. Hasilnya? Sistem tidak bisa membuat koneksi baru, dan aplikasi seperti Veeam gagal.
Dari pengalaman saya, ini sering terjadi di setup PostgreSQL pada Windows karena PgBouncer memang dirancang untuk mengelola koneksi efisien, tapi proxy Veeam yang agresif bisa memicu kehabisan port. Bayangkan jika server Anda menangani ratusan koneksi per detik – limit default hanya sekitar 68 koneksi per detik sebelum kehabisan! Ini bukan teori; saya pernah mengalami ini di proyek klien, dan downtime mencapai jam-jam berharga. Untungnya, ada cara sederhana untuk mengatasinya tanpa harus ganti hardware mahal.
Solusi Pertama: Kurangi Waktu Tunggu TIME_WAIT (Rekomendasi Utama)
Solusi paling mudah dan aman yang saya sarankan adalah mengubah durasi TIME_WAIT. Default Windows adalah 240 detik, tapi kita bisa turunkan menjadi 30 detik. Mengapa ini efektif? Karena dengan ini, port bisa lebih cepat dibebaskan dan digunakan kembali. Hitungannya sederhana: Dengan rentang port default, Anda bisa naik dari 68 koneksi per detik menjadi 546! Itu peningkatan hampir 8 kali lipat.
Bagaimana caranya? Anda perlu edit registry Windows. Jangan takut, ini aman asal ikuti langkah saya. Buka Registry Editor (regedit), navigasikan ke:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Buat nilai baru bernama “TcpTimedWaitDelay” dengan tipe DWORD (32-bit), dan isi dengan 30. Setelah itu, restart komputer agar perubahan berlaku.
Atau, jika Anda suka PowerShell seperti saya, jalankan perintah ini:
powershell
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters' -Name 'TcpTimedWaitDelay' -Value "30" -PropertyType DWORD -Force
Saya sudah coba ini di server test saya, dan hasilnya luar biasa. Koneksi stabil, tidak ada lagi error. Tapi ingat, ini adalah perubahan sistem, jadi backup registry dulu ya! Mulai dari sini karena risikonya rendah dan dampaknya langsung terasa. Banyak admin IT yang saya kenal bilang ini adalah “quick win” untuk masalah semacam ini.
Solusi Kedua: Perluas Rentang Port Dinamis (Jika Masih Bermasalah)
Jika setelah mengubah TIME_WAIT masalah masih ada misalnya di beban super tinggi langkah selanjutnya adalah tambah jumlah port ephemeral. Default hanya 16.384, tapi kita bisa naikkan menjadi 50.535 dengan mengubah rentang mulai dari port 15.000 hingga 65.535.
Mengapa port 15.000? Karena rentang bawah (seperti 1-1024) biasa dipakai sistem, dan 1025-49151 untuk layanan terdaftar. Mulai dari 15.000 minim konflik. Perubahan ini bisa naikkan limit hingga 1.684 koneksi per detik!
Caranya pakai perintah netsh di Command Prompt (jalan sebagai admin):
bash
netsh int ipv4 set dynamicport tcp start=15000 num=50535
Restart lagi setelah ini. Jika masih kurang, coba start=1025 dan num=64511 untuk hampir 64.511 port. Tapi hati-hati: Ini bisa konflik dengan aplikasi yang pakai port tetap. Saya sarankan test di lingkungan non-produksi dulu.
Dari pengalaman, kombinasi kedua solusi ini membuat sistem saya tahan banting. Di proyek terakhir, downtime turun 90%, dan tim lebih produktif. Bayangkan manfaatnya untuk bisnis Anda!
Pertimbangan Penting Sebelum Menerapkan
Sebelum Anda buru-buru terapkan, ingat beberapa hal. Pertama, ubah TIME_WAIT dulu karena lebih aman dan sesuai standar RFC 6335. Perluas port hanya jika perlu, karena bisa ganggu firewall atau layanan lain. Selalu monitor sistem setelah perubahan gunakan tools seperti netstat untuk cek port TIME_WAIT.
Risiko? Jarang, tapi jika salah konfigurasi, bisa ada konflik port. Semoga dengan panduan saya, Anda aman. Saya sudah terapkan di beberapa server tanpa masalah. Persuasi: Investasi waktu kecil ini bisa hemat biaya besar di masa depan.
Kesimpulan: Waktunya Bertindak untuk Sistem yang Lebih Tangguh
Masalah kehabisan port TCP di Windows dengan PgBouncer dan PostgreSQL bukan akhir dunia. Dengan solusi sederhana seperti mengurangi TIME_WAIT dan memperluas port, Anda bisa tingkatkan performa secara signifikan. Saya sudah buktikan sendiri, dan sekarang giliran Anda. Jangan biarkan downtime menghambat bisnis terapkan hari ini dan rasakan bedanya! Diskusikan kebutuhan Veeam Anda bersama tim iLogo Indonesia sebagai Mitra IT terpercaya yang siap membantu Anda. Hubungi Kami sekarang atau Anda dapat mengunjungi https://qlicense.com untuk informasinya. Terima kasih sudah membaca Blog ini, nantikan informasi-informasi yang menarik yang dapat Saya berikan.