Kami memiliki server java yang berjalan di linux di port tertentu yang menerima koneksi terus-menerus untuk ribuan dan ribuan pengguna. Baru-baru ini klien kami tidak dapat terhubung dengan kesalahan waktu habis. Kami menduga lalu lintas terlalu tinggi tetapi log java kami sebenarnya menunjukkan bahwa tidak banyak yang terhubung dalam per detik.
Kami menduga bahwa mungkinkah terlalu banyak yang mencoba pada saat yang sama dan mereka pada dasarnya dijatuhkan di level OS dan oleh karena itu program java tidak pernah benar-benar mendapat kesempatan untuk menerima koneksi? Apakah ada semacam log in linux yang dapat menunjukkan seseorang mencoba menabrak soket?
iptables -I INPUT -p tcp --dport some_port -m state --state NEW
. Perhatikan bahwa kecuali Anda tertarik pada perincian setiap upaya koneksi, menghilangkan-j LOG
menghindari spam dari file log sistem dengan banyak data yang tidak dibutuhkan.Ketika saya memiliki masalah jaringan yang benar-benar buruk, saya cenderung menjalankan wireshark . Bagi saya, tidak ada alat diagnostik jaringan yang lebih baik ketika saya harus turun ke rincian seluk beluk. Dan jangan khawatir jika Anda tidak dapat menginstalnya di sumber atau kotak tujuan; Anda dapat menjalankan
tcpdump -w
untuk menulis data paket ke file saat mulai dan / atau titik akhir, dan mengumpankan file ke wireshark di kotak lain sesuai keinginan Anda.sumber
tcpdump -nS dst port <some port>
Akan lebih baik untuk melihat secara tepat apa yang diperoleh benang Java Anda pada tingkat soket. Pada saat yang sama Anda ingin menghubungkannya dengan info jaringan OS. Lihatlah AppFirst. Mereka dapat melakukan hal semacam ini.
sumber
menunjukkan koneksi yang sedang dibangun.
Bandingkan ini dengan
ulimit
pengaturan aktif Anda , dan tentu saja dengan jumlah koneksi maksimal yang bisa ditangani oleh aplikasi java Anda.sumber