{"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 per l'ottimizzazione dell'ambiente Linux al fine di raggiungere le massime prestazioni nell'elaborazione delle richieste HTTP. I metodi proposti hanno permesso di aumentare le prestazioni del gestore JSON basato sulla libreria libreactor nell'ambiente Amazon EC2 (4 vCPU) da 224 mila 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 (un aumento del 436%), e hanno anche portato a una riduzione dei tempi di latenza nell'elaborazione delle richieste del 79%. I metodi proposti non sono specifici per libreactor e funzionano con altri server http, inclusi 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, che \u00e8 stata migliorata rimuovendo il codice per limitare il numero di core CPU utilizzati (l'ottimizzazione ha consentito di accelerare le prestazioni del 25-27%), compilazione in GCC con le opzioni \u00ab-O3\u00bb (aumento 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'aumento 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 dalle vulnerabilit\u00e0 causate dall'esecuzione speculativa delle istruzioni. L'uso dei parametri al caricamento del kernel \u00abnospectre_v1 nospectre_v2 pti=off mds=off tsx_async_abort=off\u00bb ha permesso di aumentare le prestazioni del 28%, e la capacit\u00e0 di elaborazione \u00e8 aumentata da 347k req\/s a 446k req\/s. Singolarmente, il guadagno dal parametro \u00abnospectre_v1\u00bb (protezione da Spectre v1 + SWAPGS) \u00e8 stato dell'1-2%, \u00abnospectre_v2\u00bb (protezione da 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 dagli attacchi L1TF\/Foreshadow (l1tf=flush), iTLB multihit, Speculative Store Bypass e SRBDS sono rimaste inalterate, in quanto non hanno influenzato le prestazioni, non sovrapponendosi alla 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>, virtualizzazione annidata e altri modelli di CPU).\n<li class=\"l\"> Disattivazione dei meccanismi di audit e blocco delle chiamate di sistema tramite il comando \u00abauditctl -a never,task\u00bb e specificando l'opzione \u00ab--security-opt seccomp=unconfined\u00bb durante l avvio del contenitore docker. L'aumento 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 mediante il caricamento dei moduli kernel correlati. L'idea di disattivare il firewall, non utilizzato in una soluzione server specifica, \u00e8 stata suggerita dai risultati del profiling, che indicano che la funzione nf_hook_slow richiedeva il 18% del tempo. Si nota che nftables funziona in modo pi\u00f9 efficiente rispetto a iptables, ma in Amazon Linux si continua a utilizzare iptables. Dopo aver disattivato iptables, il miglioramento delle prestazioni \u00e8 stato del 22%, mentre la larghezza di banda \u00e8 aumentata da 495k req\/s a 603k req\/s.\n<li class=\"l\"> Riduzione della migrazione dei gestori tra diversi core CPU per migliorare l'efficienza dell'utilizzo della cache del processore. L'ottimizzazione \u00e8 stata eseguita sia a livello di binding dei processi libreactor ai core CPU (CPU Pinning), sia attraverso il legame dei gestori di rete del kernel (Receive Side Scaling). Ad esempio, \u00e8 stata disattivata irqbalance e sono state impostate esplicitamente le affinit\u00e0 delle code con CPU in \/proc\/irq\/$IRQ\/smp_affinity_list. Per utilizzare lo stesso core CPU per elaborare i processi libreactor e la coda di rete dei pacchetti in ingresso \u00e8 stato utilizzato un gestore BPF personalizzato, connesso tramite l'impostazione del flag SO_ATTACH_REUSEPORT_CBPF durante la creazione del socket. Per legare alle CPU le code dei pacchetti in uscita, sono state modificate le impostazioni in \/sys\/class\/net\/eth0\/queues\/tx-&lt;n&gt;\/xps_cpus. L'incremento totale delle prestazioni \u00e8 stato del 38%, con la larghezza di banda 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 la manipolazione di sysctl net.core.busy_read hanno permesso di aumentare le prestazioni del 28% (la capacit\u00e0 di elaborazione \u00e8 aumentata da 834k req\/s a 1.06M req\/s, e i ritardi sono diminuiti da 361\u03bcs a 292\u03bcs).\n<li class=\"l\"> Disabilitazione dei servizi di sistema che portano a blocchi indesiderati 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 incremento delle prestazioni del 6%, con la larghezza di banda aumentata da 1.06M req\/s a 1.12M req\/s. La causa dell'impatto di dhclient sulle prestazioni \u00e8 stata analizzata tramite il traffico utilizzando un socket raw.\n<li class=\"l\"> Gestione dello 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 aumento delle prestazioni del 2%, e 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 disattivare GRO (Generic Receive Offload) con il comando &#171;ethtool -K eth0 gro off&#187; e sostituire l'algoritmo di controllo della congestione tcp da cubic a reno utilizzando sysctl &#171;net.ipv4.tcp_congestion_control=reno&#187;. Il guadagno totale di prestazioni \u00e8 stato del 4%. La larghezza di banda \u00e8 aumentata da 1.15M req\/s a 1.2M req\/s.          <\/ul>\n<p>Oltre alle ottimizzazioni implementate, l'articolo esamina anche i metodi che non hanno portato all'atteso aumento delle prestazioni. Ad esempio, sono risultati inefficaci:    <\/p>\n<ul>\n<li class=\"l\"> L'esecuzione separata di libreactor non ha mostrato differenze di prestazioni rispetto all'esecuzione all'interno di un container. La sostituzione di writev con send, l'aumento di maxevents in epoll_wait e gli esperimenti con versioni e flag GCC non hanno avuto impatto (l'effetto era visibile solo per i flag &#171;-O3&#187; e &#171;-march-native&#187;).\n<li class=\"l\"> Non ha influito sulle prestazioni l'aggiornamento del kernel Linux alle versioni 4.19 e 5.4, l'uso dei pianificatori SCHED_FIFO e SCHED_RR, le manipolazioni con sysctl kernel.sched_min_granularity_ns, kernel.sched_wakeup_granularity_ns, transparent_hugepages=never, skew_tick=1 e clocksource=tsc.\n<li class=\"l\"> Nel driver ENA, l'attivazione delle modalit\u00e0 Offload (segmentazione, scatter-gather, checksum rx\/tx), la compilazione con il flag &#171;-O3&#187; e l'applicazione dei parametri ena.rx_queue_size e ena.force_large_llq_header non hanno avuto effetto.\n<li class=\"l\"> Non hanno portato a un aumento delle prestazioni le modifiche nello stack di rete:\n<ul>\n<li>Disabilitare IPv6: ipv6.disable=1<\/li>\n<li>Disabilitare VLAN: modprobe -rv 8021q<\/li>\n<li>Disabilitare il controllo dell'origine del pacchetto\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.1.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.1.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":"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}]}}