{"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\/it\/blog\/news\/optimizacziya-linux-dlya-obrabotki-1-2-mln-json-zaprosov-v-sekundu","title":{"rendered":"Ottimizzazione di Linux per gestire 1,2 milioni di richieste JSON al secondo","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>\u00c8 stata pubblicata una guida dettagliata sull'ottimizzazione dell'ambiente Linux per raggiungere le massime prestazioni nella gestione delle richieste HTTP. I metodi proposti hanno consentito di aumentare le prestazioni del gestore JSON basato sulla libreria libreactor in un ambiente Amazon EC2 (4 vCPU) da 224.000 richieste API al secondo con le impostazioni predefinite di Amazon Linux 2 con kernel 4.14 a 1,2 milioni di richieste al secondo dopo l'ottimizzazione (crescita del 436%), oltre a ridurre i tempi di latenza nella gestione delle richieste del 79%. I metodi proposti non sono specifici per libreactor e funzionano con altri server http, tra cui nginx, Actix, Netty e Node.js (libreactor \u00e8 stato utilizzato nei test poich\u00e9 la soluzione basata su di esso ha mostrato le migliori prestazioni).      <center><img decoding=\"async\" alt=\"Ottimizzazione di Linux per gestire 1,2 milioni di richieste JSON al secondo\" src=\"\/wp-content\/uploads\/2021\/05\/908fb8d92e84a3e7557af7f6c622298e.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Ottimizzazioni principali:  <\/p>\n<ul>\n<li class=\"l\"> Ottimizzazione del codice libreactor. \u00c8 stata utilizzata come base la versione R18 del set Techempower, migliorata rimuovendo il codice per limitare il numero di core CPU utilizzati (l'ottimizzazione ha permesso un incremento delle prestazioni del 25-27%), compilazione in GCC con le opzioni \u00ab-O3\u00bb (incremento del 5-10%) e \u00ab-march-native\u00bb (5-10%), sostituzione delle chiamate read\/write con recv\/send (5-10%) e riduzione delle spese generali nell'uso di pthreads (2-3%). L'incremento complessivo delle prestazioni dopo l'ottimizzazione del codice \u00e8 stato del 55%, mentre la capacit\u00e0 di elaborazione \u00e8 aumentata da 224k req\/s a 347k req\/s.\n<li class=\"l\"> Disattivazione della protezione contro vulnerabilit\u00e0 causate dall'esecuzione speculativa delle istruzioni. L'uso dei parametri di avvio del kernel \u00abnospectre_v1 nospectre_v2 pti=off mds=off tsx_async_abort=off\u00bb ha consentito di aumentare le prestazioni del 28%, mentre la capacit\u00e0 di elaborazione \u00e8 passata da 347k req\/s a 446k req\/s. In particolare, l'incremento dal parametro \u00abnospectre_v1\u00bb (protezione contro Spectre v1 + SWAPGS) \u00e8 stato dell'1-2%, \u00abnospectre_v2\u00bb (protezione contro Spectre v2) \u2014 15-20%, \u00abpti=off\u00bb (Spectre v3\/Meltdown) \u2014 6%, \u00abmds=off tsx_async_abort=off\u00bb (MDS\/Zombieload e TSX Asynchronous Abort) \u2014 6%. Le impostazioni per la protezione contro attacchi L1TF\/Foreshadow (l1tf=flush), iTLB multihit, Speculative Store Bypass e SRBDS sono rimaste invariate, in quanto non influivano sulle prestazioni essendo specifiche per la configurazione testata (ad esempio, specifiche per <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/it\/vps\/abuzoustojchivye-vps\/\"   title=\"KVM\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"4395\">KVM<\/a>, la virtualizzazione nidificata e altri modelli di CPU).\n<li class=\"l\"> Disattivazione dei meccanismi di audit e blocco delle chiamate di sistema utilizzando il comando \u00abauditctl -a never,task\u00bb e specificando l'opzione \u00ab--security-opt seccomp=unconfined\u00bb all'avvio del contenitore docker. L'incremento complessivo delle prestazioni \u00e8 stato dell'11%, mentre la capacit\u00e0 di elaborazione \u00e8 aumentata da 446k req\/s a 495k req\/s.\n<li class=\"l\"> Disabilitare iptables\/netfilter scaricando i relativi moduli del kernel. L'idea di disattivare il firewall, non utilizzato in una soluzione server specifica, \u00e8 stata motivata dai risultati del profiling, da cui si evince che la funzione nf_hook_slow richiedeva il 18% del tempo. Si segnala che nftables \u00e8 pi\u00f9 efficiente di iptables, ma su Amazon Linux resta in uso iptables. Dopo la disattivazione di iptables, si \u00e8 registrato un aumento delle prestazioni del 22% e la capacit\u00e0 di elaborazione \u00e8 aumentata da 495k req\/s a 603k req\/s.\n<li class=\"l\"> Riduzione della migrazione dei gestori tra core CPU diversi per migliorare l'efficienza dell'uso della cache della CPU. L'ottimizzazione \u00e8 stata effettuata sia a livello di binding dei processi libreactor ai core CPU (CPU Pinning), sia mediante il fissaggio dei gestori di rete del kernel (Receive Side Scaling). Ad esempio, \u00e8 stata disattivata l'irqbalance e sono state impostate esplicitamente le affinit\u00e0 delle code a CPU in \/proc\/irq\/$IRQ\/smp_affinity_list. Per utilizzare lo stesso core CPU per elaborare il processo libreactor e la coda di rete dei pacchetti in entrata \u00e8 stato impiegato un gestore BPF personalizzato, connesso tramite l'impostazione del flag SO_ATTACH_REUSEPORT_CBPF durante la creazione del socket. Per il binding a CPU delle code dei pacchetti in uscita sono state modificate le impostazioni in \/sys\/class\/net\/eth0\/queues\/tx-&lt;n&gt;\/xps_cpus. Il guadagno totale di prestazioni \u00e8 stato del 38%, mentre la larghezza di banda \u00e8 aumentata da 603k req\/s a 834k req\/s.\n<li class=\"l\"> Ottimizzazione della gestione delle interruzioni e utilizzo del polling. L'attivazione della modalit\u00e0 adaptive-rx nel driver ENA e le manipolazioni con sysctl net.core.busy_read hanno consentito di aumentare le prestazioni del 28% (la capacit\u00e0 di elaborazione \u00e8 passata da 834k req\/s a 1.06M req\/s, mentre i ritardi sono diminuiti da 361\u00b5s a 292\u00b5s).\n<li class=\"l\"> Disattivazione dei servizi di sistema che causano blocchi eccessivi nello stack di rete. Disattivare dhclient e installare <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/it\/lir\/ipv4\/\"   title=\"Indirizzi IP\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"683\">Indirizzi IP<\/a> manualmente ha portato a un aumento delle prestazioni del 6%, mentre la capacit\u00e0 di trasmissione \u00e8 aumentata da 1,06M req\/s a 1,12M req\/s. La ragione dell'impatto di dhclient sulle prestazioni nell'analisi del traffico utilizzando socket raw.\n<li class=\"l\"> Combattimento contro Spin Lock. La modifica dello stack di rete in modalit\u00e0 \u00abnoqueue\u00bb tramite sysctl \u00abnet.core.default_qdisc=noqueue\u00bb e \u00abtc qdisc replace dev eth0 root mq\u00bb ha portato a un incremento delle prestazioni del 2%, mentre la capacit\u00e0 di elaborazione \u00e8 aumentata da 1.12M req\/s a 1.15M req\/s.\n<li class=\"l\"> Ottimizzazioni finali minori, come la disattivazione di GRO (Generic Receive Offload) tramite il comando \u00abethtool -K eth0 gro off\u00bb e la sostituzione dell'algoritmo di controllo del congestionamento da cubic a reno tramite sysctl \u00abnet.ipv4.tcp_congestion_control=reno\u00bb. L'incremento complessivo delle prestazioni \u00e8 stato del 4%. La capacit\u00e0 di elaborazione \u00e8 aumentata da 1.15M req\/s a 1.2M req\/s.          <\/ul>\n<p>Oltre alle ottimizzazioni implementate, l'articolo discute anche metodi che non hanno portato al aumento delle prestazioni previsto. Ad esempio, si sono rivelati inefficaci:    <\/p>\n<ul>\n<li class=\"l\"> L'esecuzione separata di libreactor non ha mostrato differenze di prestazioni rispetto all'esecuzione in contenitore. Non hanno avuto effetto la sostituzione di writev con send, l'aumento di maxevents in epoll_wait, gli esperimenti con versioni e flag GCC (l'effetto \u00e8 stato evidente solo per i flag \u00ab-O3\u00bb e \u00ab-march-native\u00bb).\n<li class=\"l\"> L'aggiornamento del kernel Linux a versioni 4.19 e 5.4, l'uso dei pianificatori SCHED_FIFO e SCHED_RR, la manipolazione di sysctl kernel.sched_min_granularity_ns, kernel.sched_wakeup_granularity_ns, transparent_hugepages=never, skew_tick=1 e clocksource=tsc non hanno influito sulle prestazioni.\n<li class=\"l\"> Nei driver ENA, l'attivazione delle modalit\u00e0 Offload (segmentazione, scatter-gather, rx\/tx checksum), la compilazione con il flag \u00ab-O3\u00bb e l'applicazione dei parametri ena.rx_queue_size e ena.force_large_llq_header non hanno influenzato le prestazioni.\n<li class=\"l\"> Le modifiche nello stack di rete non hanno portato a un aumento delle prestazioni:\n<ul>\n<li>Disabilitazione di IPv6: ipv6.disable=1<\/li>\n<li>Disabilitazione di VLAN: modprobe -rv 8021q<\/li>\n<li>Disabilitazione del controllo della sorgente dei pacchetti\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 (effetto negativo)<\/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>Fonte: <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.0.1 - 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\/it\/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.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/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\udd47Ottimizzazione di Linux per gestire 1,2 milioni di richieste JSON al secondo | ProHoster","description":"\u00c8 stata pubblicata una guida dettagliata per l'ottimizzazione dell'ambiente Linux al fine di ottenere le massime prestazioni nell'elaborazione delle richieste HTTP.","canonical_url":"https:\/\/prohoster.info\/it\/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":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/100221","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=100221"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/100221\/revisions"}],"predecessor-version":[{"id":164272,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/100221\/revisions\/164272"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/100222"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=100221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=100221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=100221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}