Saya sedang melakukan perencanaan kapasitas dan saya bertanya-tanya apakah ada formula yang bisa saya gunakan untuk memprediksi (dari sudut pandang memori) berapa banyak koneksi TCP yang bisa saya tangani di server saya. Saat ini, saya hanya memikirkan kebutuhan memori.
Beberapa variabel yang saya pikir akan muncul dalam rumus adalah:
- sysctl
net.ipv4.tcp_wmem
(min atau nilai default) - sysctl
net.ipv4.tcp_rmem
(min atau nilai default) - ukuran sock, sock_common, proto dan struktur data per-socket lainnya.
Saya tidak yakin berapa banyak tcp_wmem dan tcp_rmem yang benar-benar dialokasikan dan kapan memori itu dialokasikan. Pada waktu pembuatan soket? Sesuai permintaan?
tcp_mem lebih penting karena mendefinisikan bagaimana tcp stack seharusnya berperilaku ketika menyangkut penggunaan memori. IMO kirim dan terima buffer harus merupakan kelipatan dari tcp_mem. Berikut ini tautan ke rumus untuk menerima buffer: http://www.acc.umu.se/~maswan/linux-netperf.txt . Pendeknya:
Inilah yang dikatakan artikel tentang tcp_mem:
IMO nilai tcp_mem tengah yang lebih besar mempercepat koneksi dengan hilangnya keamanan yang lebih rendah dan sedikit meningkatkan penggunaan memori.
Anda dapat memantau tumpukan jaringan dengan:
sumber
David telah memberikan jawaban yang sangat bagus untuk pertanyaan yang diajukan, namun kecuali jika Anda secara eksklusif menggunakan LFN , kemudian bahkan pada server berbasis peristiwa, buffer TCP cenderung hanya sebagian kecil dari jejak per koneksi.
Untuk perencanaan kapasitas tidak ada pengganti untuk menguji server dan menghitung regresi penggunaan memori oleh beban.
sumber