Günlük 25 milyon API çağrısı alan Haproxy + Gunicorn + Flask üçlüsünden oluşan bir sunucumuz bulunmakta. Sunucunun içerisinde ayrıca bir adet büyük miktarda veriye sahip MongoDB veritabanı bulunmakta. Netdata ile monitorleme ve Elasticsearch ile istatistikleme yapıyoruz. 64 GB Ram, AMD Ryzen 7 1700x Pro işlemcili ve SSD depolamaya sahip. Zaman zaman netdata üzerinden alarmlar alıyorduk, Accept Queue Overflow ve Listen Queue Overflow alarmlarıyla karşılaşıyorduk. Bunların çözümünün sysctl.conf üzerinden olacağına dair araştırmalar yaptık ve gerekli değerleri yavaş yavaş uyarılar kesilinceye kadar arttırmamıza rağmen bu değerler absürtmüş gibi bir izlenime sahibiz. Sysctl.conf içerisindeki konfigürasyonlar aşağıda, daha detaylı bilgi isteyenlere sağlayabilirim. Şimdiden teşekkürler.
net.ipv4.tcp_max_syn_backlog = 1000000 net.core.somaxconn = 8192 net.core.netdev_max_backlog = 900000 net.netfilter.nf_conntrack_max = 1024288 net.netfilter.nf_conntrack_tcp_timeout_close_wait = 20 net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 30 net.netfilter.nf_conntrack_tcp_timeout_time_wait = 20 net.core.wmem_default=8388608 net.core.rmem_default=8388608 net.core.rmem_max=16777216 net.core.wmem_max=16777216 net.ipv4.tcp_rmem=4096 8388608 16777216 net.ipv4.tcp_wmem=4096 8388608 16777216 net.ipv4.tcp_mem=4096 8388608 10388608 net.ipv4.route.flush=1 net.ipv4.ip_local_port_range = 10000 61000netstat -s | grep -i list çıktısı;
netstat -s | grep -i list 644 times the listen queue of a socket overflowed 279381 SYNs to LISTEN sockets droppedSunucumuzdaki REST API sistemini Websocket'e geçirdiğimiz için şu anda sorun yaşamıyoruz ancak bu ayarlarla geçirmeden önce de sorun yaşamıyorduk, şu anda websocket ile ortalama concurrent sayımız 1200-1500 arasında gezmekte.