{"id":100221,"date":"2021-05-21T10:23:03","date_gmt":"2021-05-21T08:23:03","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/optimizacziya-linux-dlya-obrabotki-1-2-mln-json-zaprosov-v-sekundu"},"modified":"2021-05-21T10:23:03","modified_gmt":"2021-05-21T08:23:03","slug":"optimizacziya-linux-dlya-obrabotki-1-2-mln-json-zaprosov-v-sekundu","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/news\/optimizacziya-linux-dlya-obrabotki-1-2-mln-json-zaprosov-v-sekundu","title":{"rendered":"Linuxi optimeerimine, et t\u00f6\u00f6delda 1,2 miljonit JSON-i p\u00e4ringut sekundis","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Avaldati \u00fcksikasjalik juhend Linuxi keskkonna tuuninguks HTTP-p\u00e4ringute maksimaalse t\u00f5hususe saavutamiseks. Pakutud meetodid v\u00f5imaldasid t\u00f5sta JSON-i t\u00f6\u00f6tleja, mis p\u00f5hines libreactor-raamatukogul, j\u00f5udlust Amazon EC2 (4 vCPU) keskkonnas 224 000 API-p\u00e4ringult sekundis Amazon Linux 2 vaikeseadetes 4.14 tuumaga 1,2 miljoni p\u00e4ringuni sekundis p\u00e4rast optimeerimist (kasvu 436%), ning v\u00e4hendada p\u00e4ringute t\u00f6\u00f6tlemise viivitusi 79%. Pakutud meetodid ei ole spetsiifilised libreactorile ja t\u00f6\u00f6tavad ka teiste http-serverite, sealhulgas nginx, Actix, Netty ja Node.js, puhul (libreactorit kasutati testides, kuna selle p\u00f5hine lahendus n\u00e4itas parimat j\u00f5udlust).      <center><img decoding=\"async\" alt=\"Linuxi optimeerimine, et t\u00f6\u00f6delda 1,2 miljonit JSON-i p\u00e4ringut sekundis\" src=\"\/wp-content\/uploads\/2021\/05\/908fb8d92e84a3e7557af7f6c622298e.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Peamised optimeerimised:  <\/p>\n<ul>\n<li class=\"l\"> Libreactor'i koodi optimeerimine. Aluseks oli Techempower'i R18 variant, mida t\u00e4iustati CPU tuumade arvu piiramiseks m\u00f5eldud koodi eemaldamisega (optimeerimine v\u00f5imaldas kiirus kasvada 25\u201327%), GCC-s kokkupanekuga valikutega '-O3' (kasv 5-10%) ja '-march-native' (5-10%), read\/write v\u00e4ljakutsete asendamisega recv\/send'iga (5-10%) ja pthreadide kasutamisega seotud kulude v\u00e4hendamisega (2-3%). Koodi optimeerimise j\u00e4rel oli \u00fcldine efektiivsuse kasv 55%, protsessingu maht t\u00f5usis 224k req\/s-lt 347k req\/s-le.\n<li class=\"l\"> Spetsiaalsete k\u00e4skude spekuleerimise t\u00e4itmisega seotud haavatavuste kaitse v\u00e4ljal\u00fclitamine. Yader's laadimise parameetrite 'nospectre_v1 nospectre_v2 pti=off mds=off tsx_async_abort=off' kasutamine t\u00f5stis efektiivsuse 28% v\u00f5rra, protsessingu maht kasvas 347k req\/s-lt 446k req\/s-le. \u00dcheks parameetriks 'nospectre_v1' (Spectre v1 + SWAPGS kaitse) oli t\u00f5us 1-2%, 'nospectre_v2' (Spectre v2 kaitse) - 15-20%, 'pti=off' (Spectre v3\/Meltdown) - 6%, 'mds=off tsx_async_abort=off' (MDS\/Zombieload ja TSX Asynchronous Abort) - 6%. Loodud on muutumatud seaded L1TF\/Foreshadow r\u00fcnnakute kaitsmiseks (l1tf=flush), iTLB multihit, Speculative Store Bypass ja SRBDS jaoks, mis ei m\u00f5jutanud efektiivsust, kuna need ei kattunud testitud konfiguratsiooniga (nt on need spetsiifilised). <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/et\/vps\/abuzoustojchivye-vps\/\"   title=\"KVM\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"4395\">KVM<\/a>, sisemiste virtualiseerimise ja teiste CPU mudelite korral.\n<li class=\"l\"> Auditi ja s\u00fcsteemikutsete lukustamise mehhanismide v\u00e4ljal\u00fclitamine k\u00e4suga 'auditctl -a never,task' ja valiku '---security-opt seccomp=unconfined' m\u00e4\u00e4ramine docker konteineri k\u00e4ivitamisel. \u00dcldine efektiivsuse t\u00f5us oli 11%, protsessingu maht kasvas 446k req\/s-lt 495k req\/s-le.\n<li class=\"l\"> Iptables\/netfilter'i keelamine seotud tuumamoodulite laadimise kaudu. Ideed tulem\u00fc\u00fcri v\u00e4lja l\u00fclitamiseks, mida ei kasutatud spetsiifilises serverilahenduses, toetas profiilimise tulemused, mille kohaselt kulus nf_hook_slow funktsiooni t\u00e4itmiseks 18% ajast. T\u00e4hendatud on, et nftables t\u00f6\u00f6tab efektiivsemalt kui iptables, kuid Amazon Linuxis kasutatakse endiselt iptables'i. Iptables'i keelamise j\u00e4rel kasvas j\u00f5udlus 22%, samas kui l\u00e4bilaskev\u00f5ime suurenes 495k req\/s-lt 603k req\/s-le.\n<li class=\"l\"> Migratsiooni v\u00e4hendamine erinevate CPU tuumade vahel, et t\u00f5sta protsessori vahem\u00e4lu efektiivset kasutamist. Optimeerimine viidi l\u00e4bi nii protsesside libreactor tuumadele kinnitamise (CPU Pinning) kui ka tuuma v\u00f5rgu t\u00f6\u00f6tlejate kinnitamise (Receive Side Scaling) tasandil. N\u00e4iteks keelati irqbalance ja kinnitati j\u00e4rjekordade seosed \u00fchele tuumale \/proc\/irq\/$IRQ\/smp_affinity_list failis. Protsessi libreactor ja sissetuleva v\u00f5rgu pakettide t\u00f6\u00f6tlemiseks kasutati sama CPU tuuma jaoks oma BPF t\u00f6\u00f6tlejat, mis aktiveeriti SO_ATTACH_REUSEPORT_CBPF lipu seadistamise kaudu soketi loomisel. V\u00e4ljuvate pakettide j\u00e4rjekordade kinnitamiseks CPU-le muudeti seadistusi \/sys\/class\/net\/eth0\/queues\/tx-&lt;n&gt;\/xps_cpus. \u00dcldine j\u00f5udluse t\u00f5us oli 38%, samas kui l\u00e4bilaskev\u00f5ime suurenes 603k req\/s-lt 834k req\/s-le.\n<li class=\"l\"> Katkestuste t\u00f6\u00f6tlemise optimeerimine ja pollingu kasutamine. Adaptive-rx re\u017eiimi sissel\u00fclitamine ENA draiveris ja sysctl net.core.busy_read manipuleerimine t\u00f5stis efektiivsuse 28% ehk protsessingu maht t\u00f5usis 834k req\/s-lt 1.06M req\/s-le ja viivitused v\u00e4henesid 361\u00b5s-lt 292\u00b5s-le.\n<li class=\"l\"> S\u00fcsteemiteenuste keelamine, mis p\u00f5hjustavad liigseid blokeeringuid v\u00f5rgu stack'is. dhclient'i keelamine ja seadistamine <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/et\/lir\/ipv4\/\"   title=\"IP-aadressid\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"683\">IP-aadressid<\/a> k\u00e4sitsi t\u00f5i kaasa j\u00f5udluse kasvu 6%, samas kui l\u00e4bilaskev\u00f5ime suurenes 1.06M req\/s-lt 1.12M req\/s-le. dhclient'i m\u00f5ju j\u00f5udlusele selgub toorme soketi abil liikluse anal\u00fc\u00fcsimisel.\n<li class=\"l\"> Spin Lock'i probleemide lahendamine. V\u00f5rgustatud korpuse seadmine re\u017eiimi 'noqueue' sysctl kaudu 'net.core.default_qdisc=noqueue' ja 'tc qdisc replace dev eth0 root mq' t\u00f5i kaasa efektiivsuse kasvu 2%, protsessingu maht t\u00f5usis 1.12M req\/s-lt 1.15M req\/s-le.\n<li class=\"l\"> L\u00f5ppviimistluse v\u00e4iksed optimeerimised, nagu GRO (Generic Receive Offload) v\u00e4lja l\u00fclitamine k\u00e4suga &#171;ethtool -K eth0 gro off&#187; ja koormuse juhtimise algoritmi muutmine cubic-ist reno-ks sysctl abil &#171;net.ipv4.tcp_congestion_control=reno&#187;. \u00dcldine j\u00f5udluse t\u00f5us oli 4%. L\u00e4bip\u00e4\u00e4suv\u00f5imekus suurenes 1.15M req\/s-lt 1.2M req\/s-eni.          <\/ul>\n<p>Lisaks rakendatud optimeerimistele k\u00e4sitleb artikkel ka meetodeid, mis ei toonud oodatud j\u00f5udluse kasvu. N\u00e4iteks osutusid ebaefektiivseteks:    <\/p>\n<ul>\n<li class=\"l\"> Libreactori eraldi k\u00e4ivitamine ei erinenud j\u00f5udluses konteineris k\u00e4ivitamisest. Writev asendamine send-iga, maxevents'i suurendamine epoll_wait-is, katsetamine versioonide ja GCC lipukestega ei avaldanud m\u00f5ju (m\u00f5ju oli m\u00e4rgatav ainult lippude &#171;-O3&#187; ja &#171;-march-native&#187; puhul).\n<li class=\"l\"> Linuxi tuuma uuendamine versioonidele 4.19 ja 5.4 ei m\u00f5jutanud j\u00f5udlust, samas kui SCHED_FIFO ja SCHED_RR planeerijate kasutamine, sysctl muutujaid nagu kernel.sched_min_granularity_ns, kernel.sched_wakeup_granularity_ns, transparent_hugepages=never, skew_tick=1 ja clocksource=tsc manipuleerimine ei avaldanud m\u00f5ju.\n<li class=\"l\"> ENA draiveris ei avaldanud Offload-re\u017eiimide (segmenteerimine, scatter-gather, rx\/tx checksum) lubamine, &#171;-O3&#187; lipukesega kompileerimine ja parameetrite ena.rx_queue_size ja ena.force_large_llq_header rakendamine m\u00f5ju.\n<li class=\"l\"> V\u00f5rgu hunniku muudatused ei toonud kaasa j\u00f5udluse t\u00f5usu:\n<ul>\n<li>IPv6 v\u00e4ljal\u00fclitamine: ipv6.disable=1<\/li>\n<li>VLAN-i v\u00e4ljal\u00fclitamine: modprobe -rv 8021q<\/li>\n<li>Paketi allika kontrollimise v\u00e4ljal\u00fclitamine\n<ul>\n<li>net.ipv4.conf.all.rp_filter=0<\/li>\n<li>net.ipv4.conf.eth0.rp_filter=0<\/li>\n<li>net.ipv4.conf.all.accept_local=1 (negatiivne efekt)<\/li>\n<\/ul>\n<\/li>\n<li>net.ipv4.tcp_sack=0<\/li>\n<li>net.ipv4.tcp_dsack=0<\/li>\n<li>net.ipv4.tcp_mem\/tcp_wmem\/tcp_rmem <\/li>\n<li>net.core.netdev_budget<\/li>\n<li>net.core.dev_weight<\/li>\n<li>net.core.netdev_max_backlog<\/li>\n<li>net.ipv4.tcp_slow_start_after_idle=0 <\/li>\n<li>net.ipv4.tcp_moderate_rcvbuf=0<\/li>\n<li>net.ipv4.tcp_timestamps=0<\/li>\n<li>net.ipv4.tcp_low_latency=1<\/li>\n<li>SO_PRIORITY<\/li>\n<li>TCP_NODELAY<\/li>\n<\/ul>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=55186\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0442\u044e\u043d\u0438\u043d\u0433\u0443 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f Linux \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u0438 \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 JSON \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 libreactor \u0432 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438 Amazon EC2 (4 vCPU) c 224 \u0442\u044b\u0441\u044f\u0447 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 API \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043f\u0440\u0438 \u0448\u0442\u0430\u0442\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 Amazon Linux 2 \u0441 \u044f\u0434\u0440\u043e\u043c 4.14 \u0434\u043e 1.2 \u043c\u043b\u043d \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":100222,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-100221","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0442\u044e\u043d\u0438\u043d\u0433\u0443 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f Linux \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/news\/optimizacziya-linux-dlya-obrabotki-1-2-mln-json-zaprosov-v-sekundu\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f Linux \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 1.2 \u043c\u043b\u043d JSON-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0442\u044e\u043d\u0438\u043d\u0433\u0443 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f Linux \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/news\/optimizacziya-linux-dlya-obrabotki-1-2-mln-json-zaprosov-v-sekundu\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2021-05-21T08:23:03+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2021-05-21T08:23:03+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Linuxi optimeerimine 1.2 miljoni JSON-p\u00e4ringu t\u00f6\u00f6tlemiseks sekundis | ProHoster","description":"Avaldatud on p\u00f5hjalik juhend Linuxi keskkonna h\u00e4\u00e4lestamiseks maksimaalse HTTP-p\u00e4ringute t\u00f6\u00f6tlemise j\u00f5udluse saavutamiseks.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/news\/optimizacziya-linux-dlya-obrabotki-1-2-mln-json-zaprosov-v-sekundu","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f Linux \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 1.2 \u043c\u043b\u043d JSON-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 | ProHoster","og:description":"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0442\u044e\u043d\u0438\u043d\u0433\u0443 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f Linux \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.","og:url":"https:\/\/prohoster.info\/et\/blog\/news\/optimizacziya-linux-dlya-obrabotki-1-2-mln-json-zaprosov-v-sekundu","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2021-05-21T08:23:03+00:00","article:modified_time":"2021-05-21T08:23:03+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"100221","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-05-21 09:18:54","updated":"2026-02-08 20:24:03","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/100221","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=100221"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/100221\/revisions"}],"predecessor-version":[{"id":164272,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/100221\/revisions\/164272"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/100222"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=100221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=100221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=100221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}