Leas iomlán a bhaint Linux chun 1.2 milliún iarratas JSON a phróiseáil in aghaidh an tsoicind

Tá treoir mhionsonraithe maidir le coigeartú an chomhshaoil ​​foilsithe. Linux chun an fheidhmíocht uasta a bhaint amach le haghaidh próiseála iarratais HTTP. Chuir na modhanna atá molta ar ár gcumas feidhmíocht an pharsálaí JSON a mhéadú bunaithe ar leabharlann an lireactor i dtimpeallacht Amazon EC2 (4 vCPU) ó 224 iarratas API in aghaidh an tsoicind faoi shocruithe caighdeánacha Amazon. Linux Mhéadaigh leagan 2 le croí 4.14 an tréchur go 1.2 milliún iarratas in aghaidh an tsoicind tar éis an optamaithe (méadú 436%), agus laghdaigh sé moill próiseála iarratas faoi 79%. Níl na modhanna atá beartaithe sainiúil do libreactor agus oibríonn siad le freastalaithe HTTP eile, lena n-áirítear nginx, Actix, Netty, agus Node.js (baineadh úsáid as libreactor sna tástálacha, toisc gur léirigh an réiteach bunaithe air feidhmíocht níos fearr).

Leas iomlán a bhaint Linux chun 1.2 milliún iarratas JSON a phróiseáil in aghaidh an tsoicind

Optamaithe bunúsacha:

  • Cód lireactor a bharrfheabhsú. Baineadh úsáid as an rogha R18 ó threalamh Techempower mar bhunús, a feabhsaíodh trí chód a bhaint chun líon na gcroí LAP a úsáidtear a theorannú (cheadaigh an leas iomlán a bhaint as obair a bhrostú 25-27%), ag cur le chéile i GCC leis na roghanna “-O3”. (méadú 5-10%) agus “-march-dúchasach” (5-10%), ag cur recv/seoladh (5-10%) in ionad glaonna léite/scríofa agus ag laghdú forchostais nuair a úsáidtear snáitheanna púdair (2-3%) . Ba é an méadú foriomlán feidhmíochta tar éis barrfheabhsú cód ná 55%, agus mhéadaigh tréchur ó 224k req/s go 347k req/s.
  • Ag díchumasú cosaint i gcoinne leochaileachtaí de bharr forghníomhú tuairimíoch treoracha. Trí úsáid a bhaint as na paraiméadair tosaithe eithne "nospectre_v1 nospectre_v2 pti=off mds=off tsx_async_abort=off" mhéadaigh an fheidhmíocht faoi 28%, agus mhéadaigh an tréchur ó 347k req/s go 446k req/s. Ina n-aonar, ba é an gnóthachan ón bparaiméadar "nospectre_v1" (cosaint ó Spectre v1 + SWAPGS) ná ​​1-2%, "nospectre_v2" (cosaint ó Spectre v2) - 15-20%, "pti=off" (Spectre v3/Meltdown) - 6%, "mds=off tsx_async_abort=off" (MDS/Zombieload agus TSX Asynchronous Abort) - 6%. Fágadh na socruithe le haghaidh cosaint i gcoinne ionsaithe L1TF/Foreshadow (l1tf=flush), ilbhuille iTLB, Seachbhóthar Siopa Amhrasach agus SRBDS, nach raibh tionchar acu ar fheidhmíocht, gan athrú, ós rud é nach raibh siad ag trasnú leis an gcumraíocht tástála (mar shampla, tá siad sainiúil do KVM, fíorúlú neadaithe agus samhlacha LAP eile).
  • Iniúchadh agus meicníochtaí blocála glaonna córais a dhíchumasú ag baint úsáide as an ordú "auditctl -a never,task" agus ag sonrú an rogha "--security-opt seccomp=unconfined" agus an coimeádán docker á thosú. Ba é an méadú foriomlán feidhmíochta ná 11%, agus mhéadaigh tréchur ó 446k riachtanas go 495k riachtanas.
  • Ag díchumasú iptables/netfilter trí mhodúil eithne gaolmhara a dhíluchtú. Spreag torthaí próifílithe an smaoineamh balla dóiteáin nach raibh in úsáid i réiteach freastalaí ar leith a dhíchumasú, rud a léirigh gur chaith an fheidhm nf_hook_slow 18% den am ag feidhmiú. Tugtar faoi deara go bhfuil nftables níos éifeachtaí ná iptables, ach ar Amazon Linux Leanann iptables de bheith in úsáid. Tar éis iptables a dhíchumasú, mhéadaigh an fheidhmíocht faoi 22%, agus mhéadaigh an tréchur ó 495k req/s go 603k req/s.
  • Imirce laghdaithe láimhseálaithe idir croíleacáin éagsúla LAP chun éifeachtúlacht úsáid taisce próiseálaí a fheabhsú. Rinneadh optamú ag leibhéal na bpróiseas ceangailteach leabhránaithe chuig croíleacáin LAP (CPU) agus trí láimhseálaithe líonra eithne feannadh (Faigh Scálú Taobh). Mar shampla, díchumasaíodh irqbalance agus socraíodh cleamhnas scuaine leis an LAP go sainráite i /proc/irq/$IRQ/smp_affinity_list. Chun an croí LAP céanna a úsáid chun an próiseas libreactor agus an scuaine líonra de phaicéid isteach a phróiseáil, úsáidtear láimhseálaí saincheaptha BPF, ceangailte trí bhratach SO_ATTACH_REUSEPORT_CBPF a shocrú agus an soicéad á chruthú. Chun scuainí de phaicéid amach a cheangal leis an LAP, athraíodh na socruithe /sys/class/net/eth0/queues/tx- /xps_cpus. Ba é an méadú foriomlán feidhmíochta ná 38%, agus mhéadaigh tréchur ó 603k req/s go 834k req/s.
  • Láimhseáil idirbhriste agus úsáid vótaíochta a bharrfheabhsú. Mhéadaigh an fheidhmíocht oiriúnaitheach-rx sa tiománaí ENA agus ionramháil sysctl net.core.busy_read 28% (méadaigh tréchur ó 834k req/s go 1.06M req/s, agus laghdaigh an fhoighne ó 361μs go 292μs).
  • Seirbhísí córais a dhíchumasú a chruthaíonn glasálacha cruach líonra neamhriachtanacha. Dhclient a dhíchumasú agus a shuiteáil Seoltaí IP Mar thoradh ar an tasc seo a dhéanamh de láimh, tháinig méadú 6% ar fheidhmíocht, agus mhéadaigh an tréchur ó 1.06M riacht/s go 1.12M riacht/s. Is é an chúis atá le tionchar dhclient ar fheidhmíocht ná anailís tráchta ag baint úsáide as soicéad amh.
  • Troid Spin Lock. Tháinig méadú 0% ar fheidhmíocht mar thoradh ar chruach an líonra a aistriú go mód “noqueue” trí sysctl “net.core.default_qdisc=noqueue” agus “tc qdisc replace dev eth2 root mq”, agus mhéadaigh tréchur ó 1.12M req/s go 1.15M req/s.
  • Mionleasuithe deiridh, mar shampla GRO (Ginearálta Faigh Offload) a dhíchumasú leis an ordú “ethtool -K eth0 gro off” agus reno a chur in ionad an algartam rialaithe plódaithe ciúbach ag baint úsáide as sysctl “net.ipv4.tcp_congestion_control=reno”. Ba é an méadú iomlán táirgiúlachta ná 4%. Méadaíodh tréchur ó 1.15M req/s go 1.2M req/s.

Chomh maith leis na optimizations a d'oibrigh, pléann an t-alt freisin modhanna nach raibh mar thoradh ar an méadú feidhmíochta ionchais. Mar shampla, ní raibh na rudaí seo a leanas éifeachtach:

  • Ní raibh difríocht idir an fheidhmíocht a ritheadh ​​lireactor ar leithligh agus é a rith i gcoimeádán. Ní raibh aon éifeacht ag baint le seoltaí a chur in ionad writev, méadú ar mhéaduithe in epoll_wait, agus triail a bhaint as leaganacha agus bratacha GCC (ní raibh an éifeacht le sonrú ach amháin do na bratacha “-O3” agus “-march-dúchais”).
  • Ní raibh aon tionchar ag an nuashonrú eithne ar fheidhmíocht. Linux suas go dtí leaganacha 4.19 agus 5.4, ag baint úsáide as sceidealóirí SCHED_FIFO agus SCHED_RR, ag ionramháil sysctl kernel.sched_min_granularity_ns, kernel.sched_wakeup_granularity_ns, transparent_hugepages=never, skew_tick=1 agus clocksource=tsc.
  • Sa tiománaí ENA, ní raibh aon éifeacht ag cumasú modhanna Offload (deighilt, scaip-bhailiú, rx/tx checksum), ag tógáil leis an mbratach “-O3”, agus ag baint úsáide as na paraiméadair ena.rx_queue_size agus ena.force_large_llq_header.
  • Níor chuir athruithe sa chruach líonra feabhas ar fheidhmíocht:
    • Díchumasaigh IPv6: ipv6.disable=1
    • Díchumasaigh VLAN: modprobe -rv 8021q
    • Díchumasaigh seiceáil foinse an phacáiste
      • net.ipv4.conf.all.rp_filter=0
      • net.ipv4.conf.eth0.rp_filter=0
      • net.ipv4.conf.all.accept_local=1 (éifeacht dhiúltach)
    • net.ipv4.tcp_sack = 0
    • net.ipv4.tcp_dsack=0
    • net.ipv4.tcp_mem/tcp_wem/tcp_rmem
    • net.core.netdev_buiséad
    • net.core.dev_meáchan
    • 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

    Foinse: oscailtenet.ru

Ceannaigh óstáil iontaofa do shuímh le cosaint DDoS, freastalaithe VPS VDS 🔥 Ceannaigh óstáil gréasáin iontaofa le cosaint DDoS, freastalaithe VPS VDS | ProHoster