แแแแแฅแแแงแแแแฃแแแ แแแขแแแฃแ แ แกแแฎแแแแซแฆแแแแแแ แแแแฃแฅแกแแก แแแ แแแแก แแแ แแแฃแแแ แแแแก แจแแกแแฎแแ HTTP แแแแฎแแแแแแแก แแแแฃแจแแแแแแก แแแฅแกแแแแแฃแ แ แจแแกแ แฃแแแแแก แแแกแแฆแฌแแแแ. แจแแแแแแแแแแแฃแแแ แแแแแแแแแ แจแแกแแซแแแแแแ แแแฎแแแ แแแแแแ แแแก JSON แแ แแชแแกแแ แแก แแคแแฅแขแฃแ แแแ, แ แแแแแแช แแแคแฃแซแแแแฃแแแ Amazon EC2 แแแ แแแแจแ (4 vCPU) Libreactor แแแแแแแแแแแแ 224 แแแแกแ API แแแแฎแแแแแแแ แฌแแแจแ Amazon Linux 2-แแก แกแขแแแแแ แขแฃแแ แแแ แแแแขแ แแแแ, แแแ แแแแ 4.14-แแแ 1.2 แแแแแแ แแแแฎแแแแแแแ. แแแแ แ แแแขแแแแแแชแแแก แจแแแแแ (แแ แแ 436%) แแ แแกแแแ แแแแแแฌแแแ แแแแฎแแแแแแแก แแแแฃแจแแแแแแก แจแแคแแ แฎแแแแแแก 79%-แแ แจแแแชแแ แแแ. แจแแแแแแแแแแแฃแแ แแแแแแแแ แแ แแ แแก แกแแแชแแคแแแฃแ แ libreactor-แแกแแแแก แแ แแฃแจแแแแก แกแฎแแ http แกแแ แแแ แแแแก แแแแแงแแแแแแกแแก, แแแ แจแแ แแก nginx, Actix, Netty แแ Node.js (libreactor แแแแแแงแแแแแแแ แขแแกแขแแแจแ, แ แแแแแ แแแกแแ แแแคแฃแซแแแแฃแแ แแแแแกแแแแแ แแฉแแแแ แฃแแแแแกแ แจแแกแ แฃแแแแ).
แซแแ แแแแแ แแแขแแแแแแชแแ:
- Libreactor แแแแแก แแแขแแแแแแชแแ. แกแแคแฃแซแแแแ แแแแแแงแแแแแแแ R18 แแแ แแแแขแ Techempower-แแก แแแแ แแแแแแ, แ แแแแแแช แแแฃแแฏแแแแกแแ แแแแแก แแแแฆแแแแ แแแแแงแแแแแฃแแ CPU แแแ แแแแแแก แ แแแแแแแแแก แจแแแฆแฃแแแแก แแแแแแ (แแแขแแแแแแชแแ แกแแจแฃแแแแแแก แแซแแแแแ แแแแฉแฅแแ แแก แแฃแจแแแแ 25-27%), GCC-แจแ แแฌแงแแแ โ-O3โ แแแ แแแแขแแแแ. (แแแขแแแ 5-10%) แแ "-แแแ แขแ-แแจแแแแแฃแ แ" (5-10%), แฌแแแแแฎแแแก/แฉแแฌแแ แแก แแแ แแแแก แฉแแแแชแแแแแ recv/แแแแแแแแแ (5-10%) แแ แแแแแแแแแแก แจแแแชแแ แแแ pthread-แแแแก แแแแแงแแแแแแกแแก (2-3%). . แแแแแแแ แจแแกแ แฃแแแแแก แแ แแ แแแแแก แแแขแแแแแแชแแแก แจแแแแแ แแงแ 55%, แฎแแแ แแแแขแแ แฃแแแ แแแแแแ แแแแแแ แแ 224k req/s-แแแ 347k req/s-แแแ.
- แแแแแ แแแ แแแชแแ แกแแแแฃแแแชแแฃแ แ แจแแกแ แฃแแแแแก แฎแแ แแแแแแแกแแแ. แแแ แแแแก แฉแแขแแแ แแแแกแแก แแแ แแแแขแ แแแแก โnospectre_v1 nospectre_v2 pti=off mds=off tsx_async_abort=offโ แแแแแงแแแแแแ แกแแจแฃแแแแแ แแแกแชแ แแแแแ แแแก แจแแกแ แฃแแแแ 28%-แแ แแ แแแแขแแ แฃแแแ แแแแแแ แแแแแแ แแ 347k req/s-แแแ 446k req/s-แแแ. แชแแแแ, แแ แแ แแแ แแแแขแ แแแแ โnospectre_v1โ (แแแชแแ Spectre v1 + SWAPGS-แแกแแแ) แแงแ 1-2%, โnospectre_v2โ (แแแชแแ Spectre v2-แแกแแแ) - 15-20%, โpti=offโ (Spectre v3/Meltdown) - 6%, "mds=off tsx_async_abort=off" (MDS/Zombieload แแ TSX แแกแแแฅแ แแแฃแแ แจแแฌแงแแแขแ) - 6%. L1TF/Foreshadow (l1tf=flush), iTLB multihit, Speculative Store Bypass แแ SRBDS แแแแแแกแฎแแแแแกแแแ แแแชแแแก แแแ แแแแขแ แแแ แแแ แฉแ แฃแชแแแแแ, แ แแช แแแแแแแแก แแ แแแแฎแแแแก แจแแกแ แฃแแแแแแ, แ แแแแแ แแกแแแ แแ แแแแแแแแ แขแแกแขแแ แแแฃแ แแแแคแแแฃแ แแชแแแกแแแ (แแแแแแแแแ, แกแแแชแแคแแแฃแ แ KVM-แแกแแแแก, แฉแแกแแฃแแ แแแ แขแฃแแแแแแชแแ แแ แกแฎแแ CPU แแแแแแแแ).
- แแฃแแแขแแกแ แแ แกแแกแขแแแฃแ แ แแแ แแแแก แแแแแแแแแก แแแฅแแแแแแแแแก แแแแแ แแแ แแ แซแแแแแแก "auditctl -a never,task" แแแแแงแแแแแแ แแ แแคแชแแแก "--security-opt seccomp=unconfined" แแแแแแแแแ แแแแแ แแก แแแแขแแแแแ แแก แแแจแแแแแกแแก. แแแแแแแ แจแแกแ แฃแแแแแก แแ แแ แแงแ 11%, แฎแแแ แแแแขแแ แฃแแแ แแแแแแ แแแแแแ แแ 446k req/s-แแแ 495k req/s-แแแ.
- iptables/netfilter-แแก แแแแแ แแแ แแแแแแจแแ แแแฃแแ แแแ แแแแก แแแแฃแแแแแก แแแแแแขแแแ แแแแ. Firewall-แแก แแแแแ แแแแก แแแแ, แ แแแแแแช แแ แแงแ แแแแแงแแแแแฃแแ แกแแ แแแ แแก แกแแแชแแคแแแฃแ แแแแแฌแงแแแขแแจแ, แแแแแฌแแแฃแแ แแงแ แแ แแคแแแแ แแแฃแแ แจแแแแแแแแ, แแแแกแฏแแแแแ, แ แแ nf_hook_slow แคแฃแแฅแชแแแก แจแแกแ แฃแแแแแก แแ แแแก 18% แแแกแญแแ แแ. แแฆแแแจแแฃแแแ, แ แแ nftables แฃแคแ แ แแคแแฅแขแฃแ แแ แแฃแจแแแแก, แแแแ แ iptables, แแแแ แแ Amazon Linux แแแ แซแแแแแก iptables-แแก แแแแแงแแแแแแก. iptable-แแแแก แแแแแ แแแแก แจแแแแแ, แจแแกแ แฃแแแแแก แแ แแ แแงแ 22%, แฎแแแ แแแแขแแ แฃแแแ แแแแแแ แแแแแแ แแ 495k req/s-แแแ 603k req/s-แแแ.
- แจแแแชแแ แแ แแแแแฃแจแแแแแแแแแก แแแแ แแชแแ แกแฎแแแแแกแฎแแ CPU แแแ แแแแแก แจแแ แแก แแ แแชแแกแแ แแก แฅแแจแแก แแแแแงแแแแแแก แแคแแฅแขแฃแ แแแแก แแแกแแฃแแฏแแแแกแแแแแ. แแแขแแแแแแชแแ แแแแฎแแ แชแแแแแ แ แแแแ แช CPU-แแก แแแ แแแแแแแ (CPU Pinning), แแกแแแ แแแ แแแแก แฅแกแแแแก แแแแแฃแจแแแแแแแแแก (Receive Side Scaling) แแแแแแ แแแแก แแแแแแ (Receive Side Scaling). แแแแแแแแแ, irqbalance แแแแแจแฃแแ แแงแ แแ แ แแแแแ แแแแจแแ แ CPU-แกแแแ แแจแแแ แแ แแงแ แแแงแแแแแฃแแ /proc/irq/$IRQ/smp_affinity_list-แจแ. แแแแแ CPU แแแ แแแแก แแแแแกแแงแแแแแแแ แแแแ แแฅแขแแ แแก แแ แแชแแกแแกแ แแ แจแแแแแแแแแ แแแแแขแแแแก แฅแกแแแแก แ แแแแก แแแกแแแฃแจแแแแแแแ, แแแแแแงแแแแแ แแแ แแแแฃแแ BPF แแแแแฃแจแแแแแแแ, แ แแแแแแช แแแแแแจแแ แแแฃแแแ แกแแแแขแแก แจแแฅแแแแกแแก SO_ATTACH_REUSEPORT_CBPF แแ แแจแแก แแแงแแแแแแ. แแแแแแแแ แแแแแขแแแแก แ แแแแแแก CPU-แกแแแ แแแกแแแแแจแแ แแแแแ, แแแ แแแแขแ แแแ /sys/class/net/eth0/queues/tx- แจแแแชแแแแ. /xps_cpus. แแแแแแแ แจแแกแ แฃแแแแแก แแ แแ แแงแ 38%, แฎแแแ แแแแขแแ แฃแแแ แแแแแแ แแแแแแ แแ 603k req/s-แแแ 834k req/s-แแแ.
- แจแแคแแ แฎแแแแก แแแ แแแแกแ แแ แแแแแแแแก แแแแแงแแแแแแก แแแขแแแแแแชแแ. แแแแแขแแชแแฃแ แ-rx แ แแแแแแก แฉแแ แแแ ENA-แก แแ แแแแแ แจแ แแ sysctl net.core.busy_read แแแแแแฃแแแ แแแแ แแแแแ แแ แจแแกแ แฃแแแแ 28%-แแ (แแแแขแแ แฃแแแ แแแแแแ แแแแแแ แแ 834k req/s-แแแ 1.06M req/s-แแแ, แฎแแแ แจแแงแแแแแแ แจแแแชแแ แแ 361ฮผs-แแแ 292ฮผs-แแแ).
- แกแแกแขแแแแก แกแแ แแแกแแแแก แแแแแ แแแ, แ แแช แแฌแแแแก แฅแกแแแแก แกแขแแแจแ แแ แแกแแญแแ แ แแแแแแ แแแแก. dhclient-แแก แแแแแ แแแแ แแ IP แแแกแแแแ แแแก แฎแแแแ แแแงแแแแแแ แแแแแแฌแแแ แจแแกแ แฃแแแแแก 6%-แแแแ แแแขแแแ แแ แแแแขแแ แฃแแแ แแแแแแแก แแแแ แแ 1.06M req/s-แแแ 1.12M req/s-แแแ. แแแแแแ, แ แแก แแแแแช dhclient แแแแแแแแก แแฎแแแแก แจแแกแ แฃแแแแแแ, แแ แแก แขแ แแคแแแแก แแแแแแแ แแแแแแฃแแ แกแแแแขแแก แแแแแงแแแแแแ.
- Fighting Spin Lock. แฅแกแแแแก แกแขแแแแก โnoqueueโ แ แแแแแจแ แแแแแ แแแแ sysctl โnet.core.default_qdisc=noqueueโ แแ โtc qdisc แจแแชแแแแก dev eth0 root mqโ-แแก แกแแจแฃแแแแแแ แแแแแแฌแแแ แจแแกแ แฃแแแแแก 2%-แแ แแ แแ แแ แแแแขแแ แฃแแแ แแแแแแ แแแแแแ แแ 1.12M req/s-แแแ 1.15M-แแแ. แแแแฎแแแแ/แฌแ.
- แกแแแแแแ แแชแแ แ แแแขแแแแแแชแแ, แ แแแแ แแชแแ GRO (Generic Receive Offload) แแแแแ แแแ แแ แซแแแแแแ โethtool -K eth0 gro offโ แแ แแฃแแฃแ แ แแแแแขแแแ แแฃแแแแแก แแแแขแ แแแแก แแแแแ แแแแแก แจแแชแแแ reno-แแ sysctl โnet.ipv4.tcp_congestion_control=renoโ แแแแแงแแแแแแ. แแแแแแแ แแ แแแฃแฅแขแแฃแแแแแก แแ แแ แแงแ 4%. แแแแขแแ แฃแแแ แแแแแแ แแแแแแ แแ 1.15 แ แแแแฎแแแแแ/แฌแ-แแแ 1.2 แ แแแแฎแแแแแ/แฌแ-แแแ.
แแแ แแ แแ แแแขแแแแแแชแแแกแ, แ แแแแแแช แแฃแจแแแแแ, แกแขแแขแแแจแ แแกแแแ แแแแแฎแแแแแ แแแแแแแแ, แ แแแแแแแแช แแ แแแแแแฌแแแ แจแแกแ แฃแแแแแก แแแกแแแแแแแแ แแ แแ. แแแแแแแแแ, แจแแแแแแ แแฆแแแฉแแแ แแ แแแคแแฅแขแฃแ แ:
- แชแแ-แชแแแแ แแแจแแแแฃแแ แแแแ แแฅแขแแ แแก แจแแกแ แฃแแแแ แแ แแแแกแฎแแแแแแแแแ แแแแขแแแแแ แจแ แแแจแแแแแกแแแ. Writv-แแก แแแแแแแแแ แฉแแแแชแแแแแแ, epoll_wait-แจแ maxevents-แแก แแแแ แแแ แแ GCC แแแ แกแแแแแแ แแ แแ แแจแแแแแ แแฅแกแแแ แแแแแขแแแแ แจแแแแแ แแ แแแแขแแแ (แแคแแฅแขแ แจแแกแแแฉแแแแ แแงแ แแฎแแแแ โ-O3โ แแ โ-march-nativeโ แแ แแจแแแแกแแแแก).
- Linux-แแก แแแ แแแแก แแแแแฎแแแแ 4.19 แแ 5.4 แแแ แกแแแแแ, SCHED_FIFO แแ SCHED_RR แแ แแคแแแแแแก แแแแแงแแแแแแ, sysctl kernel.sched_min_granularity_ns, kernel.sched_wakeup_granularity_ns, transparent_hugepages=never, skew_tick=1 แแ c-แแก แแแแแแฃแแแ แแแ.
- ENA-แก แแ แแแแแ แจแ Offload แ แแแแแแแแก แฉแแ แแแแ (แกแแแแแแขแแชแแ, แกแแแขแแ -แจแแแ แแแแแ, rx/tx แแแแจแแแแ แฏแแแ), แแจแแแแแแ โ-O3โ แแ แแจแแ แแ ena.rx_queue_size แแ ena.force_large_llq_header แแแ แแแแขแ แแแแก แแแแแงแแแแแแก แแ แแแแแ แ แแคแแฅแขแ แแ แแแฐแงแแแแ.
- แฅแกแแแแก แแแกแขแแจแ แชแแแแแแแแแแ แแ แแแแฃแแฏแแแแกแ แจแแกแ แฃแแแแ:
- แแแแแ แแแ IPv6: ipv6.disable=1
- แแแแแ แแแ VLAN: modprobe -rv 8021q
- แแแแแ แแแ แแแแแขแแก แฌแงแแ แแก แจแแแแฌแแแแ
- net.ipv4.conf.all.rp_filter=0
- net.ipv4.conf.eth0.rp_filter=0
- net.ipv4.conf.all.accept_local=1 (แฃแแ แงแแคแแแ แแคแแฅแขแ)
- net.ipv4.tcp_sack = 0
- net.ipv4.tcp_dsack=0
- net.ipv4.tcp_mem/tcp_wmem/tcp_rmem
- net.core.netdev_budget
- net.core.dev_weight
- net.core.netdev_max_backlog
- net.ipv4.tcp_slow_start_after_idle=0
- net.ipv4.tcp_moderate_rcvbuf=0
- net.ipv4.tcp_timestamps=0
- net.ipv4.tcp_low_latency = 1
- SO_PRIORITY
- TCP_NODELAY
แฌแงแแ แ: opennet.ru