Robię planowanie pojemności i zastanawiam się, czy istnieje formuła, której można użyć do przewidzenia (z punktu widzenia pamięci), ile połączeń TCP mogę obsłużyć na moim serwerze. W tej chwili martwię się tylko o wymagania dotyczące pamięci.
Niektóre zmienne, które, jak sądzę, pojawią się we wzorze, to:
- sysctl's
net.ipv4.tcp_wmem
(wartość minimalna lub domyślna) - sysctl's
net.ipv4.tcp_rmem
(wartość minimalna lub domyślna) - rozmiar sock, sock_common, proto i innych struktur danych dla poszczególnych gniazd.
Nie jestem pewien, ile z tcp_wmem i tcp_rmem jest faktycznie przydzielonych i kiedy ta pamięć jest przydzielona. W czasie tworzenia gniazda? Na żądanie?
tcp_mem jest ważniejszy, ponieważ określa, jak powinien zachowywać się stos tcp, jeśli chodzi o użycie pamięci. Bufor wysyłania i odbierania IMO powinien być wielokrotnością tcp_mem. Oto link do formuły dla bufora odbiorczego: http://www.acc.umu.se/~maswan/linux-netperf.txt . W skrócie:
Oto, co artykuł mówi o tcp_mem:
IMO większa środkowa wartość tcp_mem przyspiesza połączenie przy utracie bezpieczeństwa i nieznacznie zwiększa zużycie pamięci.
Możesz monitorować stos sieciowy za pomocą:
źródło
David udzielił bardzo dobrej odpowiedzi na zadane pytanie, jednak jeśli nie używasz wyłącznie sieci LFN , to nawet na serwerze opartym na zdarzeniach bufory TCP prawdopodobnie będą tylko niewielką częścią śladu na połączenie.
W przypadku planowania pojemności nie ma substytutu testowania serwera i obliczania regresji zużycia pamięci według obciążenia.
źródło