.. cím: Rendszerpuffer hangolás - TCP és hálózati teljesítmény optimalizálása .. slug: rendszer-puffer-tuning .. dátum: 2026-02-02 10:00:00 UTC .. címkék: hálózat, teljesítmény, tuning, tcp, pufferek .. kategória: cikkek .. link: .. leírás: A rendszerpufferek megértése és optimalizálása a gyakran tévesen hálózati problémaként diagnosztizált TCP teljesítményproblémák megoldására .. típusa: szöveg

A rendszerpuffer hangolása: A "hálózati problémák" mögötti rejtett bűnös

Vezetői összefoglaló

A hálózati mérnökök gyakran találkoznak olyan helyzetekkel, amikor a TCP-ablakok vagy az alkalmazások teljesítményét a hálózati infrastruktúra hibáztatja. Kiterjedt csomagrögzítések, tcpdump-ok és hálózati elemzések végrehajtása után gyakran kiderül az igazi szűk keresztmetszet: a kimerült NIC (Network Interface Card) vagy operációs rendszer szintű pufferek a kliens- vagy szerverrendszereken.

Ez a cikk mind a régi (2009 körüli), mind a jelenlegi (2025-2026) pufferkonfigurációkat tartalmazza Linux, Windows és macOS rendszerekhez, valamint diagnosztikai technikákat a pufferkimerülés azonosítására, mielőtt az kritikus problémává válna.

A puffer kimerülésének gyakori tünetei

A probléma megértése

A TCP ablak méretezési mechanizmusa

A TCP folyamvezérlő mechanizmust használ, ahol a vevő "ablakméretet" hirdet, jelezve, hogy mennyi adatot fogadhat. Amikor a rendszerpufferek megtelnek, ez az ablak nullára zsugorodik, és várakozásra kényszeríti a küldőt. Ez hálózati problémaként jelenik meg, de valójában gazdagép-erőforrás-probléma.

Ahol a pufferek számítanak

Diagnosztikai parancsok

Linux diagnosztika

# Check current TCP buffer settings
sysctl net.ipv4.tcp_rmem
sysctl net.ipv4.tcp_wmem
sysctl net.core.rmem_max
sysctl net.core.wmem_max

# Check NIC ring buffer sizes
ethtool -g eth0

# Monitor socket buffer usage
ss -tm

# Check for TCP zero window events
tcpdump -i any 'tcp[tcpflags] & tcp-push != 0' -vv

# Check network statistics for buffer issues
netstat -s | grep -i "buffer\|queue\|drop"

Windows diagnosztika

# Check TCP parameters
netsh interface tcp show global

# View network adapter buffer settings
Get-NetAdapterAdvancedProperty -Name "Ethernet" | Where-Object {$_.DisplayName -like "*buffer*"}

# Monitor TCP statistics
netstat -s -p tcp

# Check receive window auto-tuning
netsh interface tcp show global | findstr "Receive Window"

macOS diagnosztika

# Check current buffer settings
sysctl kern.ipc.maxsockbuf
sysctl net.inet.tcp.sendspace
sysctl net.inet.tcp.recvspace

# View network statistics
netstat -s -p tcp

# Monitor socket buffers
netstat -an -p tcp

Linux puffer hangolás

Korábbi Linux-beállítások (2009 körül)

Paraméter Legacy Value (2009) Leírás
net.core.rmem_default 124928 (122KB) Alapértelmezett fogadási aljzat puffermérete
net.core.rmem_max 131071 (128 KB) Maximális vételi aljzat puffermérete
net.core.wmem_default 124928 (122KB) Alapértelmezett küldési socket pufferméret
net.core.wmem_max 131071 (128 KB) Maximális küldési socket pufferméret
net.ipv4.tcp_rmem 4096 87380 174760 TCP fogadási puffer: min, alapértelmezett, max (byte-ban)
net.ipv4.tcp_wmem 4096 16384 131072 TCP küldési puffer: min, alapértelmezett, max (byte-ban)
net.ipv4.tcp_mem 196608 262144 393216 TCP memórialapok: alacsony, nyomás, magas
net.core.netdev_max_backlog 1000 Maximum csomagok a bemeneti sorban
net.core.optmem_max 10240 (10 KB) Maximális kiegészítő pufferméret aljzatonként

Jelenlegi Linux-beállítások (2025-2026)

Paraméter Jelenlegi ajánlott érték Leírás
net.core.rmem_default 16777216 (16 MB) Alapértelmezett fogadási aljzat puffermérete
net.core.rmem_max 134217728 (128 MB) Maximális vételi aljzat puffermérete
net.core.wmem_default 16777216 (16 MB) Alapértelmezett küldési socket pufferméret
net.core.wmem_max 134217728 (128 MB) Maximális küldési socket pufferméret
net.ipv4.tcp_rmem 4096 87380 134217728 TCP fogadási puffer: min, alapértelmezett, max (max. 128 MB)
net.ipv4.tcp_wmem 4096 65536 134217728 TCP küldési puffer: min, alapértelmezett, max (max. 128 MB)
net.ipv4.tcp_mem 8388608 12582912 16777216 TCP memórialapok: alacsony, nyomás, magas (64 GB-os rendszer)
net.core.netdev_max_backlog 250000 Maximális csomagok a bemeneti sorban (10 GbE+)
net.core.optmem_max 65536 (64 KB) Maximális kiegészítő pufferméret aljzatonként
net.ipv4.tcp_congestion_control bbr BBR torlódáskezelés használata (a Google algoritmusa)
net.ipv4.tcp_window_scaling 1 A TCP ablak méretezésének engedélyezése (RFC 1323)
net.ipv4.tcp_timestamps 1 Engedélyezze a TCP időbélyegeket a jobb RTT becslés érdekében
net.ipv4.tcp_sack 1 Szelektív nyugtázás engedélyezése
net.ipv4.tcp_no_metrics_save 1 A TCP-metrikák gyorsítótárazásának letiltása

Linux konfigurációs alkalmazás

Adja hozzá ezeket a beállításokat/etc/sysctl.confvagy hozzon létre egy új fájlt/etc/sysctl.d/99-network-tuning.conf:

# Network Buffer Tuning for High-Performance Applications
# Optimized for 10GbE+ networks with RTT up to 300ms

# Core socket buffer settings
net.core.rmem_default = 16777216
net.core.rmem_max = 134217728
net.core.wmem_default = 16777216
net.core.wmem_max = 134217728

# TCP buffer settings
net.ipv4.tcp_rmem = 4096 87380 134217728
net.ipv4.tcp_wmem = 4096 65536 134217728
net.ipv4.tcp_mem = 8388608 12582912 16777216

# Device buffer settings
net.core.netdev_max_backlog = 250000
net.core.netdev_budget = 50000
net.core.netdev_budget_usecs = 5000
net.core.optmem_max = 65536

# TCP optimizations
net.ipv4.tcp_congestion_control = bbr
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.tcp_moderate_rcvbuf = 1

# Apply with: sysctl -p /etc/sysctl.d/99-network-tuning.conf

NIC gyűrűpuffer hangolás

# Check current ring buffer sizes
ethtool -g eth0

# Set maximum ring buffer sizes (adjust based on NIC capabilities)
ethtool -G eth0 rx 4096 tx 4096

# Make persistent by adding to /etc/network/interfaces or systemd service
Kritikus figyelmeztetés – Memóriafogyasztás:A tcp_mem értékek a memórialapokon vannak (általában 4 KB). A nagy pufferméretek komoly memórianyomást okozhatnak:

Windows pufferhangolás

Korábbi Windows-beállítások (2009 körül – Windows Vista/7/Server 2008)

Paraméter Legacy Value (2009) Elhelyezkedés
TcpWindowSize 65535 (64 KB) Registry: HKLM\System\CurrentControlSet\Services\Tcpip\Parameters
Tcp1323Opts 0 (letiltva) Az ablakméretezés alapértelmezés szerint le van tiltva
DefaultReceiveWindow 8192 (8 KB) Alapértelmezett fogadási ablak
DefaultSendWindow 8192 (8 KB) Alapértelmezett küldési ablak
GlobalMaxTcpWindowSize 65535 (64 KB) Maximális TCP ablakméret
TcpNumConnections 16777214 Maximális TCP kapcsolatok

Jelenlegi Windows-beállítások (Windows 10/11/Server 2019-2025)

A modern Windows aAz ablak automatikus hangolása fogadásafunkció, amely dinamikusan állítja be a vételi puffereket a hálózati feltételek alapján.

Funkció Jelenlegi ajánlott beállítás Leírás
Automatikus hangolási szint normál (vagy erősen kísérleti 10 GbE+ esetén) Dinamikus fogadási ablak beállítás
Fogadóoldali méretezés (RSS) engedélyezve van Ossza meg a hálózati feldolgozást a CPU-k között
Kémény tehermentesítés automatikus (vagy letiltva a modern hálózati kártyákon) TCP-letöltés a hálózati kártya hardverére
NetDMA letiltva Közvetlen memória hozzáférés (elavult)
TCP globális paraméterek Lásd az alábbi parancsokat Rendszerszintű TCP beállítások
Dugulásszolgáltató CUBIC (vagy NewReno tartalék) TCP torlódást szabályozó algoritmus

Windows konfigurációs parancsok

# Check current auto-tuning level
netsh interface tcp show global

# Enable auto-tuning (normal mode - default for most scenarios)
netsh interface tcp set global autotuninglevel=normal

# For high-bandwidth, high-latency networks (10GbE+, data center environments)
netsh interface tcp set global autotuninglevel=experimental

# For conservative tuning (if experimental causes issues)
netsh interface tcp set global autotuninglevel=restricted

# For very conservative tuning (not recommended for high-performance networks)
netsh interface tcp set global autotuninglevel=highlyrestricted

# Enable CUBIC congestion provider (Windows Server 2022/Windows 11+ only)
netsh interface tcp set supplemental template=Internet congestionprovider=cubic

# Note: Windows 10 and Server 2019 use Compound TCP or NewReno by default
# CUBIC is not available on these older versions

# Enable Receive-Side Scaling (RSS)
netsh interface tcp set global rss=enabled

# Set chimney offload (automatic is recommended)
netsh interface tcp set global chimney=automatic

# Disable NetDMA (recommended for modern systems)
netsh interface tcp set global netdma=disabled

# Enable Direct Cache Access (if supported)
netsh interface tcp set global dca=enabled

# Enable ECN (Explicit Congestion Notification)
netsh interface tcp set global ecncapability=enabled

# Set initial congestion window to 10 (RFC 6928)
netsh interface tcp set global initialRto=3000

Speciális NIC-pufferbeállítások (Eszközkezelőn vagy PowerShell-en keresztül)

# View current adapter settings
Get-NetAdapterAdvancedProperty -Name "Ethernet"

# Increase receive buffers (adjust based on NIC)
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Receive Buffers" -DisplayValue 2048

# Increase transmit buffers
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Transmit Buffers" -DisplayValue 2048

# Enable Jumbo Frames (if network supports it)
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Jumbo Packet" -DisplayValue 9014

# Enable Large Send Offload (LSO)
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Large Send Offload V2 (IPv4)" -DisplayValue Enabled
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Large Send Offload V2 (IPv6)" -DisplayValue Enabled

Rendszerleíró adatbázis módosítások (haladó – óvatosan használja)

# These settings are typically NOT needed on Windows 10/11 due to auto-tuning
# Only modify if auto-tuning is disabled or problematic

# Registry path: HKLM\System\CurrentControlSet\Services\Tcpip\Parameters

# Maximum TCP window size (if auto-tuning disabled)
# TcpWindowSize = 16777216 (16MB) - REG_DWORD

# Enable window scaling (enabled by default on modern Windows)
# Tcp1323Opts = 3 - REG_DWORD

# Number of TCP Timed Wait Delay
# TcpTimedWaitDelay = 30 - REG_DWORD (default 240)
Figyelmeztetés:A modern Windows rendszeren (10/11/Server 2019+) kerülje a kézi beállításjegyzék-módosításokat, hacsak az automatikus hangolás nem okoz problémákat. Az automatikus hangolási algoritmusok általában jobbak a statikus beállításoknál.

macOS pufferhangolás

Korábbi macOS-beállítások (2009 körül – Mac OS X 10.5/10.6)

Paraméter Legacy Value (2009) Leírás
kern.ipc.maxsockbuf 262144 (256 KB) Maximális foglalat pufferméret
net.inet.tcp.sendspace 32768 (32 KB) Alapértelmezett TCP küldési puffer
net.inet.tcp.recvspace 32768 (32 KB) Alapértelmezett TCP fogadási puffer
net.inet.tcp.autorcvbufmax 131072 (128 KB) Maximális automatikusan hangolt vételi puffer
net.inet.tcp.autosndbufmax 131072 (128 KB) Maximális automatikusan hangolt küldési puffer
net.inet.tcp.rfc1323 0 (letiltva) TCP ablak méretezése

Jelenlegi macOS-beállítások (macOS 12-15 Monterey és Sequoia)

Paraméter Jelenlegi ajánlott érték Leírás
kern.ipc.maxsockbuf 8388608 (8 MB) Maximális foglalat pufferméret
net.inet.tcp.sendspace 131072 (128 KB) Alapértelmezett TCP küldési puffer
net.inet.tcp.recvspace 131072 (128 KB) Alapértelmezett TCP fogadási puffer
net.inet.tcp.autorcvbufmax 16777216 (16 MB) Maximális automatikusan hangolt vételi puffer
net.inet.tcp.autosndbufmax 16777216 (16 MB) Maximális automatikusan hangolt küldési puffer
net.inet.tcp.rfc1323 1 (engedélyezve) Engedélyezze a TCP ablak méretezését
net.inet.tcp.sack 1 (engedélyezve) Szelektív nyugtázás engedélyezése
net.inet.tcp.mssdflt 1440 Alapértelmezett TCP maximális szegmensméret
net.inet.tcp.delayed_ack 3 Késleltetett ACK viselkedés

macOS konfigurációs alkalmazás

# Check current settings
sysctl kern.ipc.maxsockbuf
sysctl net.inet.tcp.sendspace
sysctl net.inet.tcp.recvspace
sysctl net.inet.tcp.autorcvbufmax
sysctl net.inet.tcp.autosndbufmax

# Apply settings temporarily (until reboot)
sudo sysctl -w kern.ipc.maxsockbuf=8388608
sudo sysctl -w net.inet.tcp.sendspace=131072
sudo sysctl -w net.inet.tcp.recvspace=131072
sudo sysctl -w net.inet.tcp.autorcvbufmax=16777216
sudo sysctl -w net.inet.tcp.autosndbufmax=16777216
sudo sysctl -w net.inet.tcp.rfc1323=1
sudo sysctl -w net.inet.tcp.sack=1

# Make settings persistent (create /etc/sysctl.conf)
sudo tee /etc/sysctl.conf <<EOF
kern.ipc.maxsockbuf=8388608
net.inet.tcp.sendspace=131072
net.inet.tcp.recvspace=131072
net.inet.tcp.autorcvbufmax=16777216
net.inet.tcp.autosndbufmax=16777216
net.inet.tcp.rfc1323=1
net.inet.tcp.sack=1
net.inet.tcp.mssdflt=1440
net.inet.tcp.delayed_ack=3
EOF

# Note: On recent macOS versions, /etc/sysctl.conf may not be read automatically
# Use a LaunchDaemon to apply settings at boot

LaunchDaemon létrehozása az állandó beállításokhoz

# Create /Library/LaunchDaemons/com.local.sysctl.plist
sudo tee /Library/LaunchDaemons/com.local.sysctl.plist <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.local.sysctl</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/sbin/sysctl</string>
        <string>-w</string>
        <string>kern.ipc.maxsockbuf=8388608</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>
EOF

sudo chmod 644 /Library/LaunchDaemons/com.local.sysctl.plist
sudo launchctl load /Library/LaunchDaemons/com.local.sysctl.plist
Figyelmeztetés:A macOS Ventura (13) és újabb verziói System Integrity Protection (SIP) korlátozásokkal rendelkeznek. Előfordulhat, hogy néhány kernelparaméter még sudo-val sem módosítható. Tesztelje a beállításokat az adott környezetben.

Teljesítményteszt és érvényesítés

Eszközök a puffer teljesítményének teszteléséhez

iperf3 – Hálózati teljesítményteszt

# Server side
iperf3 -s

# Client side - test TCP throughput
iperf3 -c server_ip -t 60 -i 5 -w 16M

# Test with multiple parallel streams
iperf3 -c server_ip -P 10 -t 60

# Test UDP performance
iperf3 -c server_ip -u -b 1000M -t 60

tcpdump - TCP ablakméretek rögzítése

# Capture and display TCP window sizes
tcpdump -i any -n 'tcp' -vv | grep -i window

# Save capture for Wireshark analysis
tcpdump -i any -w /tmp/capture.pcap 'tcp port 443'

Wireshark elemzés

Keresse meg a pufferproblémák alábbi mutatóit:

Rendszerfigyelés

# Linux - Monitor network buffer statistics
watch -n 1 'cat /proc/net/sockstat'
watch -n 1 'ss -tm | grep -i mem'

# Check for drops
netstat -s | grep -i drop

# Windows - Monitor TCP statistics
netstat -e 1

# macOS - Monitor network statistics
netstat -s -p tcp

Sávszélesség-késleltetési termék (BDP) számítása

A hálózat optimális pufferméretének meghatározásához számítsa ki a sávszélesség-késleltetési szorzatot:

BDP = Bandwidth (bits/sec) × RTT (seconds)

Example for 10 Gigabit Ethernet with 50ms RTT:
BDP = 10,000,000,000 × 0.050 = 500,000,000 bits = 62.5 MB

Buffer Size = BDP × 2 (for bidirectional traffic and headroom)
Buffer Size = 62.5 MB × 2 = 125 MB

This is why modern settings recommend 128MB maximum buffers.

Munkaterhelés-specifikus ajánlások

Munkaterhelés típusa Ajánlott pufferméret Kulcsparaméterek
Webszerver (alacsony késleltetés) 4-16 MB Alacsonyabb pufferek, több kapcsolat, gyors reagálás
Adatbázis szerver 16-32 MB Mérsékelt pufferek, egyenletes átvitel
Fájlátvitel / biztonsági mentés 64-128 MB Maximális pufferek, magas átviteli prioritás
Videó streamelés 32-64 MB Nagy pufferek, egyenletes szállítási sebesség
HPC / adatközpont 128-256 MB Maximális pufferek, speciális torlódás-szabályozás
Vezeték nélküli / mobil 2-8 MB Konzervatív pufferek, változó késleltetésű kezelés

Gyakori hibák és buktatók

Elkerülendő hibák

Hibaelhárítás munkafolyamat

  1. Állítsd fel az alapvonalat:Mérje meg az aktuális teljesítményt iperf3 vagy hasonló eszközökkel
  2. Csomagok rögzítése:A tcpdump/Wireshark segítségével azonosíthatja a TCP ablak viselkedését
  3. Ellenőrizze a rendszer statisztikáit:Keresse a cseppeket, a puffer kimerülését, az újraadásokat
  4. BDP kiszámítása:Határozza meg az elméletileg optimális pufferméreteket
  5. Folyamatos változtatások alkalmazása:Ne változtass meg mindent egyszerre
  6. Tesztelje és érvényesítse:Mérje meg a tényleges teljesítményjavulást
  7. Időbeli megfigyelés:Győződjön meg arról, hogy a beállítások optimálisak maradnak változó terhelés mellett

Hivatkozások és további irodalom

Következtetés

A puffer kimerülése a hálózattal kapcsolatosnak tűnő teljesítményproblémák gyakori kiváltó oka. A pufferméretezés 2009-es 128 KB-os korlátaitól a mai 128 MB-os kapacitásig terjedő fejlődésének megértésével a hálózati mérnökök gyorsan azonosíthatják és megoldhatják ezeket a problémákat.

A legfontosabb elvitelek:

Ne feledje: A csomagelemzés által feltárt "hálózati probléma" a TCP nulla ablakainak kimutatására valójában gazdarendszer-erőforrás probléma. Megfelelő pufferhangolással kiküszöbölheti ezeket a hamis diagnózisokat, és optimális teljesítményt érhet el.


Utolsó frissítés: 2026. február 2

Szerző: Baud9600 műszaki csapat