рдЕрдиреБрдХреВрд▓рди Linux рдкреНрд░рддрд┐ рд╕реЗрдХреЗрдиреНрдб резреи рд▓рд╛рдЦ JSON рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди

рд╡рд╛рддрд╛рд╡рд░рдгрд▓рд╛рдИ рдЯреНрдпреБрдирд┐рдЩ рдЧрд░реНрдиреЗ рд╡рд┐рд╕реНрддреГрдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рднрдПрдХреЛ рдЫред Linux HTTP рдЕрдиреБрд░реЛрдз рдкреНрд░рд╢реЛрдзрдирдХреЛ рд▓рд╛рдЧрд┐ рдЕрдзрд┐рдХрддрдо рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиред рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡рд┐рдзрд┐рд╣рд░реВрд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ Amazon EC2 рд╡рд╛рддрд╛рд╡рд░рдг (4 vCPUs) рдорд╛ libreactor рдкреБрд╕реНрддрдХрд╛рд▓рдпрдорд╛ рдЖрдзрд╛рд░рд┐рдд JSON рдкрд╛рд░реНрд╕рд░рдХреЛ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рдорд╛рдирдХ Amazon рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдЕрдиреНрддрд░реНрдЧрдд рдкреНрд░рддрд┐ рд╕реЗрдХреЗрдиреНрдб реиреирек,режрежреж API рдЕрдиреБрд░реЛрдзрд╣рд░реВрдмрд╛рдЯ рдмрдврд╛рдЙрди рдЕрдиреБрдорддрд┐ рджрд┐рдпреЛред Linux рдХрд░реНрдиреЗрд▓ рек.резрек рд╕рдБрдЧ реи рд▓реЗ рдЕрдиреБрдХреВрд▓рди рдкрдЫрд┐ рдкреНрд░рддрд┐ рд╕реЗрдХреЗрдиреНрдб рдереНрд░реБрдкреБрдЯ резреи рд▓рд╛рдЦ рдЕрдиреБрд░реЛрдзрд╣рд░реВрдорд╛ рд╡реГрджреНрдзрд┐ рдЧрд░реНтАНрдпреЛ (рекрейрем% рд╡реГрджреНрдзрд┐), рд░ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╢реЛрдзрди рд╡рд┐рд▓рдореНрдмрддрд╛рд▓рд╛рдИ рдкрдирд┐ ренреп% рд▓реЗ рдШрдЯрд╛рдпреЛред рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡рд┐рдзрд┐рд╣рд░реВ libreactor рдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЫреИрдирдиреН рд░ nginx, Actix, Netty, рд░ Node.js рд╕рд╣рд┐рдд рдЕрдиреНрдп HTTP рд╕рд░реНрднрд░рд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдЫрдиреН (libreactor рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рдХрд┐рдирдХрд┐ рдпрд╕рдорд╛ рдЖрдзрд╛рд░рд┐рдд рд╕рдорд╛рдзрд╛рдирд▓реЗ рд░рд╛рдореНрд░реЛ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рджрд░реНрд╢рди рдЧрд░реЗрдХреЛ рдерд┐рдпреЛ)ред

рдЕрдиреБрдХреВрд▓рди Linux рдкреНрд░рддрд┐ рд╕реЗрдХреЗрдиреНрдб резреи рд▓рд╛рдЦ JSON рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди

рдЖрдзрд╛рд░рднреВрдд рдЕрдиреБрдХреВрд▓рдирд╣рд░реВ:

  • рд▓рд┐рдмреНрд░реЗрдХреНрдЯрд░ рдХреЛрдб рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬ рдЧрд░реНрджреИред Techempower рдХрд┐рдЯрдмрд╛рдЯ R18 рд╡рд┐рдХрд▓реНрдкрд▓рд╛рдИ рдЖрдзрд╛рд░рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рдЬреБрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ CPU рдХреЛрд░рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рд╕реАрдорд┐рдд рдЧрд░реНрди рдХреЛрдб рд╣рдЯрд╛рдПрд░ рд╕реБрдзрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ (рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рдирд▓реЗ 25-27% рд▓реЗ рдХрд╛рдордХреЛ рдЧрддрд┐ рдмрдврд╛рдЙрди рдЕрдиреБрдорддрд┐ рджрд┐рдпреЛ), "-O3" рд╡рд┐рдХрд▓реНрдкрд╣рд░реВрд╕рдБрдЧ GCC рдорд╛ рднреЗрд▓рд╛ рднрдпреЛред (рел-резреж% рдХреЛ рдмреГрджреНрдзрд┐) рд░ "-рдорд╛рд░реНрдЪ-рдиреЗрдЯрд┐рдн" (рел-резреж%), рд░рд┐рдб/рд░рд╛рдЗрдЯ рдХрд▓рд▓рд╛рдИ recv/send (5-10%) рдХреЛ рд╕рд╛рде рдмрджрд▓реНрджреИ рд░ pthreads рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ рдУрднрд░рд╣реЗрдб рдШрдЯрд╛рдЙрдБрджреИ (5-10%) ред рдХреЛрдб рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рди рдкрдЫрд┐ рд╕рдордЧреНрд░ рдкреНрд░рджрд░реНрд╢рди рд╡реГрджреНрдзрд┐ 5% рдерд┐рдпреЛ, рд░ рдереНрд░реБрдкреБрдЯ 10k req/s рдмрд╛рдЯ 2k req/s рдорд╛ рдмрдвреНрдпреЛред
  • рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВрдХреЛ рд╕рдЯреНрдЯрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рдХрд╛рд░рдгрд▓реЗ рд╣реБрдиреЗ рдХрдордЬреЛрд░реАрд╣рд░реВ рд╡рд┐рд░реБрджреНрдз рд╕реБрд░рдХреНрд╖рд╛ рдЕрд╕рдХреНрд╖рдо рдЧрд░реНрджреИред рдХрд░реНрдиреЗрд▓ рдмреБрдЯ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ "nospectre_v1 nospectre_v2 pti=off mds=off tsx_async_abort=off" рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдирд╛рд▓реЗ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди реирео% рд▓реЗ рдмрдвреНрдпреЛ, рд░ рдереНрд░реБрдкреБрдЯ рейрекренk req/s рдмрд╛рдЯ рекрекремk req/s рдорд╛ рдмрдвреНрдпреЛред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдкрдорд╛, "nospectre_v1" рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ (Spectre v1 + SWAPGS рдмрд╛рдЯ рд╕реБрд░рдХреНрд╖рд╛) рдмрд╛рдЯ рд▓рд╛рдн рез-реи%, "nospectre_v2" (Spectre v2 рдмрд╛рдЯ рд╕реБрд░рдХреНрд╖рд╛) - резрел-реиреж%, "pti=off" (Spectre v3/Meltdown) - рем%, "mds=off tsx_async_abort=off" (MDS/Zombieload рд░ TSX Asynchronous Abort) - рем% рдерд┐рдпреЛред L1TF/Foreshadow рдЖрдХреНрд░рдордгрд╣рд░реВ (l1tf=flush), iTLB multihit, Speculative Store Bypass рд░ SRBDS рд╡рд┐рд░реБрджреНрдз рд╕реБрд░рдХреНрд╖рд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ, рдЬрд╕рд▓реЗ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрдирд▓рд╛рдИ рдЕрд╕рд░ рдЧрд░реНрджреИрдирдиреН, рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдЫреЛрдбрд┐рдПрдХрд╛ рдерд┐рдП, рдХрд┐рдирдХрд┐ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдкрд░реАрдХреНрд╖рдг рдЧрд░рд┐рдПрдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╕рдБрдЧ рдкреНрд░рддрд┐рдЪреНрдЫреЗрджрди рдЧрд░реЗрдирдиреН (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддрд┐рдиреАрд╣рд░реВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЫрдиреН) KVM, рдиреЗрд╕реНрдЯреЗрдб рднрд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╕рди рд░ рдЕрдиреНрдп CPU рдореЛрдбреЗрд▓рд╣рд░реВ)ред
  • "auditctl -a never,task" рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЕрдбрд┐рдЯрд┐рдЩ рд░ рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рдЕрд╡рд░реБрджреНрдз рдЧрд░реНрдиреЗ рд╕рдВрдпрдиреНрддреНрд░рд╣рд░реВ рдЕрд╕рдХреНрд╖рдо рдЧрд░реНрджреИ рд░ рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░ рд╕реБрд░реБ рдЧрд░реНрджрд╛ "--security-opt seccomp=unconfined" рд╡рд┐рдХрд▓реНрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджреИред рд╕рдордЧреНрд░ рдкреНрд░рджрд░реНрд╢рди рд╡реГрджреНрдзрд┐ 11% рдерд┐рдпреЛ, рд░ рдереНрд░реБрдкреБрдЯ 446k рдЕрдиреБрд░реЛрдз/s рдмрд╛рдЯ 495k рдЕрдиреБрд░реЛрдз/рд╕реЗрдХреЗрдиреНрдбрдорд╛ рдмрдвреНрдпреЛред
  • рд╕рдореНрдмрдиреНрдзрд┐рдд рдХрд░реНрдиреЗрд▓ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рдЕрдирд▓реЛрдб рдЧрд░реЗрд░ iptables/netfilter рд▓рд╛рдИ рдЕрд╕рдХреНрд╖рдо рдкрд╛рд░реНрджреИред рдХреБрдиреИ рд╡рд┐рд╢реЗрд╖ рд╕рд░реНрднрд░ рд╕рдорд╛рдзрд╛рдирдорд╛ рдкреНрд░рдпреЛрдЧ рдирдЧрд░рд┐рдПрдХреЛ рдлрд╛рдпрд░рд╡рд╛рд▓рд▓рд╛рдИ рдЕрд╕рдХреНрд╖рдо рдкрд╛рд░реНрдиреЗ рд╡рд┐рдЪрд╛рд░ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдЩ рдкрд░рд┐рдгрд╛рдорд╣рд░реВрджреНрд╡рд╛рд░рд╛ рдкреНрд░реЗрд░рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рдЬрд╕рд▓реЗ nf_hook_slow рдкреНрд░рдХрд╛рд░реНрдпрд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдорд╛ резрео% рд╕рдордп рдЦрд░реНрдЪ рдЧрд░реЗрдХреЛ рджреЗрдЦрд╛рдПрдХреЛ рдерд┐рдпреЛред рдпреЛ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдПрдХреЛ рдЫ рдХрд┐ nftables iptables рднрдиреНрджрд╛ рдмрдвреА рдХреБрд╢рд▓ рдЫ, рддрд░ Amazon рдорд╛ Linux iptables рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЬрд╛рд░реА рдЫред iptables рд▓рд╛рдИ рдЕрд╕рдХреНрд╖рдо рдкрд╛рд░реЗрдкрдЫрд┐, рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди реиреи% рд▓реЗ рдмрдвреНрдпреЛ, рд░ рдереНрд░реБрдкреБрдЯ рекрепрелk req/s рдмрд╛рдЯ ремрежрейk req/s рдорд╛ рдмрдвреНрдпреЛред
  • рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреНрдпрд╛рд╕ рдкреНрд░рдпреЛрдЧрдХреЛ рджрдХреНрд╖рддрд╛ рд╕реБрдзрд╛рд░ рдЧрд░реНрди рд╡рд┐рднрд┐рдиреНрди CPU рдХреЛрд░рд╣рд░реВ рдмреАрдЪ рд╣реНрдпрд╛рдиреНрдбрд▓рд░рд╣рд░реВрдХреЛ рдХрдо рдорд╛рдЗрдЧреНрд░реЗрд╕рдиред рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рдирд▓рд╛рдИ рд╕реАрдкреАрдпреВ рдХреЛрд░ (рд╕реАрдкреАрдпреВ рдкрд┐рдирд┐рдЩ) рд░ рдкрд┐рдирд┐рдЩ рдХрд░реНрдиреЗрд▓ рдиреЗрдЯрд╡рд░реНрдХ рд╣реНрдпрд╛рдиреНрдбрд▓рд░рд╣рд░реВ (рд╕рд╛рдЗрдб рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реЛрд╕реН) рдорд╛рд░реНрдлрдд рдмрд╛рдЗрдиреНрдбрд┐рдЩ рд▓рд┐рдмреНрд░реЗрдХреНрдЯрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрдХреЛ рд╕реНрддрд░рдорд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, irqbalance рдЕрд╕рдХреНрд╖рдо рдкрд╛рд░рд┐рдПрдХреЛ рдерд┐рдпреЛ рд░ CPU рд▓рд╛рдИ рд▓рд╛рдордмрджреНрдзрддрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ /proc/irq/$IRQ/smp_affinity_list рдорд╛ рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред libreactor рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд░ рдЖрдЧрдорди рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВрдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рд▓рд╛рдо рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди рдЙрд╣реА CPU рдХреЛрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди, рд╕рдХреЗрдЯ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрд╛ SO_ATTACH_REUSEPORT_CBPF рдлреНрд▓реНрдпрд╛рдЧ рд╕реЗрдЯ рдЧрд░реЗрд░ рдЬрдбрд╛рди рдЧрд░рд┐рдПрдХреЛ рдЕрдиреБрдХреВрд▓рди BPF рд╣реНрдпрд╛рдиреНрдбрд▓рд░ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред CPU рдорд╛ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреЗ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВрдХреЛ рд▓рд╛рдорд╣рд░реВ рдмрд╛рдБрдзреНрди, рд╕реЗрдЯрд┐рдЩрд╣рд░реВ /sys/class/net/eth0/queues/tx- рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░рд┐рдПрдХреЛ рдЫред /xps_cpusред рд╕рдордЧреНрд░ рдкреНрд░рджрд░реНрд╢рди рд╡реГрджреНрдзрд┐ 38% рдерд┐рдпреЛ, рд░ рдереНрд░реБрдкреБрдЯ 603k req/s рдмрд╛рдЯ 834k req/s рдорд╛ рдмрдвреНрдпреЛред
  • рдЕрд╡рд░реЛрдз рд╣реНрдпрд╛рдиреНрдбрд▓рд┐рдВрдЧ рд░ рдорддрджрд╛рди рдХреЛ рдЙрдкрдпреЛрдЧ рдХреЛ рдЕрдиреБрдХреВрд▓рдиред ENA рдбреНрд░рд╛рдЗрднрд░рдорд╛ adaptive-rx рдореЛрдб рд╕рдХреНрд╖рдо рдкрд╛рд░реНрджреИ рд░ sysctl net.core.busy_read рд╣реЗрд░рдлреЗрд░рд▓реЗ 28% рд▓реЗ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рдмрдврд╛рдпреЛ (рдереНрд░реБрдкреБрдЯ 834k req/s рдмрд╛рдЯ 1.06M req/s рдорд╛ рдмрдвреНрдпреЛ, рд░ рд╡рд┐рд▓рдореНрдмрддрд╛ 361╬╝s рдмрд╛рдЯ 292╬╝s рдорд╛ рдШрдЯреНрдпреЛ)ред
  • рдЕрдирд╛рд╡рд╢реНрдпрдХ рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдЯреНрдпрд╛рдХ рд▓рдХрд╣рд░реВ рдирд┐рдореНрддреНрдпрд╛рдЙрдиреЗ рдкреНрд░рдгрд╛рд▓реА рд╕реЗрд╡рд╛рд╣рд░реВ рдЕрд╕рдХреНрд╖рдо рдкрд╛рд░реНрджреИред dhclient рдЕрд╕рдХреНрд╖рдо рдкрд╛рд░реНрджреИ рд░ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИ рдЖрдИрдкреА тАЛтАЛрдареЗрдЧрд╛рдирд╛рд╣рд░реВ рдпреЛ рдХрд╛рд░реНрдп рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рдЧрд░реНрдирд╛рд▓реЗ рем% рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рд╡реГрджреНрдзрд┐ рднрдпреЛ, рдереНрд░реБрдкреБрдЯ рез.режрем рдорд┐рд▓рд┐рдпрди рдЖрд╡рд╢реНрдпрдХрддрд╛/рд╕реЗрдХреЗрдиреНрдбрдмрд╛рдЯ рез.резреи рдорд┐рд▓рд┐рдпрди рдЖрд╡рд╢реНрдпрдХрддрд╛/рд╕реЗрдХреЗрдиреНрдбрдорд╛ рдмрдвреНрдпреЛред dhclient рдХреЛ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрдирдорд╛ рдкреНрд░рднрд╛рд╡рдХреЛ рдХрд╛рд░рдг рдХрдЪреНрдЪрд╛ рд╕рдХреЗрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЯреНрд░рд╛рдлрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрдиреБ рд╣реЛред
  • рд╕реНрдкрд┐рди рд▓рдХ рд▓рдбреНрджреИред sysctl "net.core.default_qdisc=noqueue" рд░ "tc qdisc рдмрджрд▓реНрдиреБрд╣реЛрд╕реН dev eth0 root mq" рдорд╛рд░реНрдлрдд рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдЯреНрдпрд╛рдХрд▓рд╛рдИ "noqueue" рдореЛрдбрдорд╛ рд╕реНрд╡рд┐рдЪ рдЧрд░реНрджрд╛ 2% рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рд╡реГрджреНрдзрд┐ рднрдпреЛ, рд░ рдереНрд░реБрдкреБрдЯ 1.12M req/s рдмрд╛рдЯ 1.15M рдорд╛ рдмрдвреНрдпреЛред рдЕрдиреБрд░реЛрдз/рд╕реЗред
  • "ethtool -K eth0 gro off" рдЖрджреЗрд╢рдХреЛ рд╕рд╛рде GRO (рдЬреЗрдиреЗрд░рд┐рдХ рд░рд┐рд╕рд┐рдн рдЕрдлрд▓реЛрдб) рдЕрд╕рдХреНрд╖рдо рдЧрд░реНрдиреЗ рд░ sysctl "net.ipv4.tcp_congestion_control=reno" рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд░реЗрдиреЛрдХреЛ рд╕рд╛рде рдШрди рднреАрдб рдирд┐рдпрдиреНрддреНрд░рдг рдПрд▓реНрдЧреЛрд░рд┐рджрдорд▓рд╛рдИ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреЗ рдЬрд╕реНрддрд╛ рдЕрдиреНрддрд┐рдо рд╕рд╛рдирд╛ рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рдирд╣рд░реВред рдХреБрд▓ рдЙрддреНрдкрд╛рджрдХрддрд╛ рд╡реГрджреНрдзрд┐ 4% рдерд┐рдпреЛред рдереНрд░реБрдкреБрдЯ 1.15M req/s рдмрд╛рдЯ 1.2M req/s рдорд╛ рдмрдвреНрдпреЛред

рдХрд╛рдо рдЧрд░реНрдиреЗ рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рдирдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рд▓реЗрдЦрд▓реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рд╡реГрджреНрдзрд┐рдХреЛ рдиреЗрддреГрддреНрд╡ рдирдЧрд░реНрдиреЗ рд╡рд┐рдзрд┐рд╣рд░реВ рдкрдирд┐ рдЫрд▓рдлрд▓ рдЧрд░реНрджрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдирд┐рдореНрди рдкреНрд░рднрд╛рд╡рдХрд╛рд░реА рд╣реБрди рд╕рдХреЗрди:

  • рд▓рд┐рдмреНрд░реЗрдПрдХреНрдЯрд░рд▓рд╛рдИ рдЫреБрдЯреНрдЯреИ рдЪрд▓рд╛рдЙрдиреБ рдХрдиреНрдЯреЗрдирд░рдорд╛ рдЪрд▓рд╛рдЙрдиреБ рднрдиреНрджрд╛ рдкреНрд░рджрд░реНрд╢рдирдорд╛ рдлрд░рдХ рдерд┐рдПрдиред Writv рд▓рд╛рдИ рдкрдард╛рдПрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреЗ, epoll_wait рдорд╛ maxevents рдмрдврд╛рдЙрдиреЗ, рд░ GCC рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рд░ рдЭрдгреНрдбрд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ рдХреБрдиреИ рдкреНрд░рднрд╛рд╡ рдкрд░реЗрди (рдкреНрд░рднрд╛рд╡ "-O3" рд░ "-march-native" рдЭрдгреНрдбрд╛рд╣рд░реВрдорд╛ рдорд╛рддреНрд░ рджреЗрдЦреНрди рд╕рдХрд┐рдиреЗ рдерд┐рдпреЛ)ред
  • рдХрд░реНрдиреЗрд▓ рдЕрдкрдбреЗрдЯрд▓реЗ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрдирд▓рд╛рдИ рдЕрд╕рд░ рдЧрд░реЗрдиред Linux рд╕рдВрд╕реНрдХрд░рдг рек.резреп рд░ рел.рек рд╕рдореНрдо, SCHED_FIFO рд░ SCHED_RR рдЕрдиреБрд╕реВрдЪрдХрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, sysctl kernel.sched_min_granularity_ns, kernel.sched_wakeup_granularity_ns, transparent_hugepages=never, skew_tick=1 рд░ clocksource=tsc рд▓рд╛рдИ рд╣реЗрд░рдлреЗрд░ рдЧрд░реНрджреИред
  • ENA рдбреНрд░рд╛рдЗрднрд░рдорд╛, рдЕрдлрд▓реЛрдб рдореЛрдбрд╣рд░реВ (рд╕реЗрдЧрдореЗрдиреНрдЯреЗрд╕рди, рд╕реНрдХреНрдпрд╛рдЯрд░-рдЧрджрд░, 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 = рез
    • 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

DDoS рд╕реБрд░рдХреНрд╖рд╛, VPS VDS рд╕рд░реНрднрд░рд╣рд░реВ рднрдПрдХрд╛ рд╕рд╛рдЗрдЯрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рднрд░рдкрд░реНрджреЛ рд╣реЛрд╕реНрдЯрд┐рдЩ рдЦрд░рд┐рдж рдЧрд░реНрдиреБрд╣реЛрд╕реН ЁЯФе DDoS рд╕реБрд░рдХреНрд╖рд╛, VPS VDS рд╕рд░реНрднрд░рд╣рд░реВ рд╕рд╣рд┐рддрдХреЛ рднрд░рдкрд░реНрджреЛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╣реЛрд╕реНрдЯрд┐рдЩ рдХрд┐рдиреНрдиреБрд╣реЛрд╕реН | ProHoster