{"id":35106,"date":"2019-10-31T22:02:22","date_gmt":"2019-10-31T19:02:22","guid":{"rendered":"https:\/\/prohoster.info\/blog\/proizvoditelnost-setevyh-prilozhenij-linux-vvedenie\/"},"modified":"2019-10-31T22:02:22","modified_gmt":"2019-10-31T19:02:22","slug":"proizvoditelnost-setevyh-prilozhenij-linux-vvedenie","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/proizvoditelnost-setevyh-prilozhenij-linux-vvedenie","title":{"rendered":"Prestazioni delle applicazioni di rete Linux. Introduzione","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Le applicazioni web sono ormai onnipresenti e tra tutti i protocolli di trasporto, l'HTTP ne rappresenta la maggior parte. Durante lo studio delle sfide nello sviluppo delle applicazioni web, molti prestano poca attenzione al sistema operativo su cui queste applicazioni vengono effettivamente eseguite. La separazione tra sviluppo (Dev) e operazioni (Ops) ha solo aggravato la situazione. Tuttavia, con la diffusione della cultura DevOps, gli sviluppatori iniziano a prendersi la responsabilit\u00e0 di far funzionare le proprie applicazioni nel cloud, quindi risulta molto utile conoscere a fondo il backend del sistema operativo. Questo \u00e8 particolarmente vantaggioso se si cerca di implementare un sistema per migliaia o decine di migliaia di connessioni simultanee.<\/p>\n<p>Le limitazioni nei servizi web sono molto simili a quelle riscontrate in altre applicazioni. Che si tratti di bilanciatori di carico o server di database, tutte queste applicazioni presentano problemi analoghi in ambienti ad alte prestazioni. Comprendere queste limitazioni fondamentali e i modi per superarle consente di valutare le prestazioni e la scalabilit\u00e0 delle vostre applicazioni web.<\/p>\n<p>Scrivo questa serie di articoli in risposta alle domande di giovani sviluppatori che desiderano diventare architetti di sistemi ben informati. \u00c8 impossibile comprendere chiaramente i metodi di ottimizzazione delle applicazioni Linux senza immergersi nelle basi e capire come funzionano a livello di sistema operativo. Sebbene esistano vari tipi di applicazioni, in questo ciclo voglio esplorare le applicazioni di rete, piuttosto che quelle desktop come browser o editor di testi. Questo materiale \u00e8 rivolto a sviluppatori e architetti che desiderano capire come funzionano i programmi Linux o Unix e come strutturarli per alte prestazioni.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nLinux \u00e8 <i>un sistema operativo<\/i> server e, pi\u00f9 spesso, le vostre applicazioni funzionano proprio su questo sistema operativo. Anche se parlo di \u00abLinux\u00bb, per la maggior parte del tempo potete presumere con sicurezza che mi riferisca a tutti i sistemi operativi Unix-like in generale. Tuttavia, non ho testato il codice accompagnatorio su altri sistemi. Quindi, se siete interessati a FreeBSD o OpenBSD, i risultati potrebbero variare. Quando provo qualcosa di specifico per Linux, lo indico.<\/p>\n<p>Sebbene tu possa utilizzare le conoscenze acquisite per creare un'applicazione da zero, e questa possa risultare straordinariamente ottimizzata, \u00e8 meglio evitarlo. Se scrivi un nuovo server web in C o C++ per un'applicazione aziendale della tua organizzazione, probabilmente sar\u00e0 il tuo ultimo giorno di lavoro. Tuttavia, conoscere la struttura di queste applicazioni ti aiuter\u00e0 a scegliere programmi gi\u00e0 esistenti. Potrai confrontare sistemi basati su processi con sistemi basati su thread, oltre che con quelli basati su eventi. Comprenderai e valuterai perch\u00e9 Nginx funziona meglio di Apache httpd e perch\u00e9 un'applicazione Python basata su Tornado pu\u00f2 gestire pi\u00f9 utenti rispetto a un'applicazione Python basata su Django.<\/p>\n<h1>ZeroHTTPd: strumento di apprendimento<\/h1>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shuveb\/zerohttpd\">ZeroHTTPd<\/a><\/noindex>\u00a0\u2014 un server web che ho scritto da zero in C come strumento didattico. Non ha dipendenze esterne, incluso l'accesso a Redis. Eseguiamo procedure Redis personalizzate. Maggiori dettagli di seguito.<\/p>\n<p>Anche se potremmo discutere a lungo sulla teoria, non c'\u00e8 niente di meglio che scrivere del codice, eseguirlo e confrontare tutte le architetture server. Questo \u00e8 il metodo pi\u00f9 visibile. Perci\u00f2, scriveremo un semplice server web ZeroHTTPd, applicando ogni modello: basato su processi, thread ed eventi. Testiamo ciascuno di questi server e vediamo come funzionano in confronto l'uno con l'altro. ZeroHTTPd \u00e8 implementato in un unico file C. Il server basato su eventi include <noindex><a rel=\"nofollow\" href=\"https:\/\/troydhanson.github.io\/uthash\/\">uthash<\/a><\/noindex>, una straordinaria implementazione di una tabella hash, fornita in un solo file di intestazione. Negli altri casi non ci sono dipendenze, per non complicare il progetto.<\/p>\n<p>Il codice contiene numerosi commenti per facilitare la comprensione. Essendo un semplice server web in poche righe di codice, ZeroHTTPd rappresenta anche un framework minimale per lo sviluppo web. Ha funzionalit\u00e0 limitate, ma \u00e8 in grado di servire file statici e pagine \"dinamiche\" molto semplici. Posso dire che ZeroHTTPd \u00e8 adatto per imparare a creare applicazioni Linux ad alte prestazioni. Fondamentalmente, la maggior parte dei servizi web attende le richieste, le verifica e le elabora. Proprio questo far\u00e0 ZeroHTTPd. \u00c8 uno strumento formativo, non per l'uso in produzione. Non \u00e8 forte nella gestione degli errori e difficilmente pu\u00f2 vantare le migliori pratiche di sicurezza (oh s\u00ec, ho usato <code>strcpy<\/code>) o trucchi complicati del linguaggio C. Ma spero che svolga bene il suo compito.<\/p>\n<p><img decoding=\"async\" alt=\"Prestazioni delle applicazioni di rete Linux. Introduzione\" src=\"\/wp-content\/uploads\/33fd0a5353667001523d5d4c8ada9ecf.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Pagina principale di ZeroHTTPd. Pu\u00f2 servire vari tipi di file, comprese le immagini.<\/i><\/p>\n<h1>Applicazione per il libro degli ospiti<\/h1>\n<p>\nLe moderne applicazioni web non si limitano solitamente a file statici. Hanno interazioni complesse con vari database, cache, ecc. Pertanto, creeremo una semplice applicazione web chiamata \u00abLibro degli ospiti\u00bb, in cui i visitatori possono lasciare messaggi con i loro nomi. Nel libro degli ospiti vengono conservati i messaggi lasciati in precedenza. C'\u00e8 anche un contatore dei visitatori nella parte inferiore della pagina.<\/p>\n<p><img decoding=\"async\" alt=\"Prestazioni delle applicazioni di rete Linux. Introduzione\" src=\"\/wp-content\/uploads\/ed8e828e8567d3d114875520988742d7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Applicazione web \u00abLibro degli ospiti\u00bb ZeroHTTPd<\/i><\/p>\n<p>Il contatore delle visite e il registro della guestbook sono memorizzati in Redis. Sono state implementate procedure proprie per la comunicazione con Redis, che non dipendono da librerie esterne. Non sono un grande sostenitore dell'implementazione di codice homemade quando ci sono soluzioni pubbliche e ben testate. Ma l'obiettivo di ZeroHTTPd \u00e8 studiare le prestazioni di Linux e l'accesso a servizi esterni, mentre la gestione delle richieste HTTP influisce notevolmente sulle prestazioni. Dobbiamo avere un controllo completo sulle comunicazioni con Redis in ciascuna delle nostre architetture server. In un'architettura utilizziamo chiamate bloccanti, in altre procedure basate su eventi. L'uso di una libreria client Redis esterna non fornisce tale controllo. Inoltre, il nostro piccolo client Redis esegue solo alcune funzioni (recupero, impostazione e incremento della chiave; recupero e aggiunta a un array). Inoltre, il protocollo Redis \u00e8 straordinariamente elegante e semplice. Non c'\u00e8 nemmeno bisogno di impararlo appositamente. Il fatto che tutta la logica del protocollo sia realizzata in circa cento righe di codice dimostra quanto sia ben progettato.<\/p>\n<p>Nell'immagine successiva sono mostrati i comportamenti dell'applicazione quando il cliente (browser) effettua una richiesta <code>\/guestbookURL<\/code>.<\/p>\n<p><img decoding=\"async\" alt=\"Prestazioni delle applicazioni di rete Linux. Introduzione\" src=\"\/wp-content\/uploads\/5c5e6740419384b7232aeead95db491b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Meccanismo di funzionamento dell'applicazione del guestbook<\/i><\/p>\n<p>Quando \u00e8 necessario generare la pagina del guestbook, viene effettuata una chiamata al file system per leggere il template in memoria e tre chiamate di rete a Redis. Il file template contiene la maggior parte del contenuto HTML per la pagina nello screenshot sopra. Ci sono anche speciali segnaposto per la parte dinamica del contenuto: post e contatore di visitatori. Otteniamo questi dati da Redis, li inseriamo nella pagina e restituiamo contenuti completamente formati al cliente. La terza chiamata a Redis pu\u00f2 essere evitata, poich\u00e9 Redis restituisce il nuovo valore della chiave all'aumento. Tuttavia, per il nostro server con architettura asincrona basata su eventi, molte chiamate di rete sono una buona sfida a scopi didattici. Pertanto, ignoriamo il valore restituito da Redis riguardo al numero di visitatori e lo richiediamo con una chiamata separata.<\/p>\n<h1>Architetture server di ZeroHTTPd<\/h1>\n<p>\nCostruiamo sette versioni di ZeroHTTPd con funzionalit\u00e0 identiche, ma architetture diverse:<\/p>\n<ul>\n<li>Iterativa\n<\/li>\n<li>Server fork (un processo figlio per richiesta)\n<\/li>\n<li>Server pre-fork (forking processes in advance)\n<\/li>\n<li>Server with execution threads (one thread per request)\n<\/li>\n<li>Server with pre-created threads\n<\/li>\n<li>Architecture based on <code>poll()<\/code>\n<\/li>\n<li>Architecture based on <code>epoll<\/code><\/li>\n<\/ul>\n<p>\nWe measure the performance of each architecture by loading the server with HTTP requests. However, when comparing architectures with a high degree of parallelism, the number of requests increases. We conduct the tests three times and calculate the average.<\/p>\n<h1>Metodologia di testing<\/h1>\n<p>\n<img decoding=\"async\" alt=\"Prestazioni delle applicazioni di rete Linux. Introduzione\" src=\"\/wp-content\/uploads\/aa4f337b6e90fa032fbef5374fac8f53.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Setup for load testing ZeroHTTPd<\/i> <\/p>\n<p>It is important that during the tests, all components do not run on the same machine. In this case, the OS incurs additional scheduling overhead as components compete for CPU. Measuring the operating system overhead with each server architecture chosen is one of the most important goals of this exercise. Adding more variables will be detrimental to the process. Therefore, the configuration shown above works best.<\/p>\n<h3>What each of these servers does<\/h3>\n<p><\/p>\n<ul>\n<li>load.unixism.net: here we run <code>ab<\/code>, the Apache Benchmark utility. It generates the required load to test our server architectures.\n<\/li>\n<li>nginx.unixism.net: a volte desideriamo eseguire pi\u00f9 istanze di un programma server. Per questo il server Nginx, con le impostazioni appropriate, funge da bilanciatore di carico per <i>ab<\/i> i nostri processi server.\n<\/li>\n<li>zerohttpd.unixism.net: qui eseguiamo i nostri programmi server su sette architetture diverse, una alla volta.\n<\/li>\n<li>redis.unixism.net: su questo server \u00e8 in esecuzione un demone Redis, dove vengono memorizzati i messaggi nel guestbook e il conteggio dei visitatori.<\/li>\n<\/ul>\n<p>\nTutti i server operano su un singolo core del processore. L'idea \u00e8 di valutare le massime prestazioni di ciascuna architettura. Poich\u00e9 tutti i programmi server vengono testati su un'unica attrezzatura, questo rappresenta il livello base per il loro confronto. La mia impostazione di test consiste in server virtuali affittati da Digital Ocean.<\/p>\n<h3>Cosa misuriamo?<\/h3>\n<p>\nPossiamo misurare diversi parametri. Valutiamo le prestazioni di ciascuna architettura in questa configurazione caricando i server con richieste a diversi livelli di parallelismo: il carico aumenta da 20 a 15.000 utenti simultanei.<\/p>\n<h1>Risultati dei test<\/h1>\n<p>\nNel diagramma seguente viene mostrata la performance dei server su diverse architetture a vari livelli di parallelismo. L'asse y rappresenta il numero di richieste al secondo, mentre l'asse x indica le connessioni parallele.<\/p>\n<p><img decoding=\"async\" alt=\"Prestazioni delle applicazioni di rete Linux. Introduzione\" src=\"\/wp-content\/uploads\/3415bcfb66503152d644130f68bd19da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Prestazioni delle applicazioni di rete Linux. Introduzione\" src=\"\/wp-content\/uploads\/ba457b671eb758f3226e0eeafaadc6aa.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Prestazioni delle applicazioni di rete Linux. Introduzione\" src=\"\/wp-content\/uploads\/aea06856d61d4d4bdda9814c53a28d4a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDi seguito la tabella con i risultati.<\/p>\n<p> richieste al secondo <\/p>\n<p><strong>parallelismo<\/strong><br \/>\n<strong>iterativo<\/strong><br \/>\n<strong>fork<\/strong><br \/>\n<strong>pre-fork<\/strong><br \/>\n<strong>threading<\/strong><br \/>\n<strong>pre-threading<\/strong><br \/>\n<strong>poll<\/strong><br \/>\n<strong>epoll<\/strong><\/p>\n<p>20<br \/>\n7<br \/>\n112<br \/>\n2100<br \/>\n1800<br \/>\n2250<br \/>\n1900<br \/>\n2050<\/p>\n<p>50<br \/>\n7<br \/>\n190<br \/>\n2200<br \/>\n1700<br \/>\n2200<br \/>\n2000<br \/>\n2000<\/p>\n<p>100<br \/>\n7<br \/>\n245<br \/>\n2200<br \/>\n1700<br \/>\n2200<br \/>\n2150<br \/>\n2100<\/p>\n<p>200<br \/>\n7<br \/>\n330<br \/>\n2300<br \/>\n1750<br \/>\n2300<br \/>\n2200<br \/>\n2100<\/p>\n<p>300<br \/>\n\u2013<br \/>\n380<br \/>\n2200<br \/>\n1800<br \/>\n2400<br \/>\n2250<br \/>\n2150<\/p>\n<p>400<br \/>\n\u2013<br \/>\n410<br \/>\n2200<br \/>\n1750<br \/>\n2600<br \/>\n2000<br \/>\n2000<\/p>\n<p>500<br \/>\n\u2013<br \/>\n440<br \/>\n2300<br \/>\n1850<br \/>\n2700<br \/>\n1900<br \/>\n2212<\/p>\n<p>600<br \/>\n\u2013<br \/>\n460<br \/>\n2400<br \/>\n1800<br \/>\n2500<br \/>\n1700<br \/>\n2519<\/p>\n<p>700<br \/>\n\u2013<br \/>\n460<br \/>\n2400<br \/>\n1600<br \/>\n2490<br \/>\n1550<br \/>\n2607<\/p>\n<p>800<br \/>\n\u2013<br \/>\n460<br \/>\n2400<br \/>\n1600<br \/>\n2540<br \/>\n1400<br \/>\n2553<\/p>\n<p>900<br \/>\n\u2013<br \/>\n460<br \/>\n2300<br \/>\n1600<br \/>\n2472<br \/>\n1200<br \/>\n2567<\/p>\n<p>1000<br \/>\n\u2013<br \/>\n475<br \/>\n2300<br \/>\n1700<br \/>\n2485<br \/>\n1150<br \/>\n2439<\/p>\n<p>1500<br \/>\n\u2013<br \/>\n490<br \/>\n2400<br \/>\n1550<br \/>\n2620<br \/>\n900<br \/>\n2479<\/p>\n<p>2000<br \/>\n\u2013<br \/>\n350<br \/>\n2400<br \/>\n1400<br \/>\n2396<br \/>\n550<br \/>\n2200<\/p>\n<p>2500<br \/>\n\u2013<br \/>\n280<br \/>\n2100<br \/>\n1300<br \/>\n2453<br \/>\n490<br \/>\n2262<\/p>\n<p>3000<br \/>\n\u2013<br \/>\n280<br \/>\n1900<br \/>\n1250<br \/>\n2502<br \/>\nampia variet\u00e0<br \/>\n2138<\/p>\n<p>5000<br \/>\n\u2013<br \/>\nampia variet\u00e0<br \/>\n1600<br \/>\n1100<br \/>\n2519<br \/>\n\u2013<br \/>\n2235<\/p>\n<p>8000<br \/>\n\u2013<br \/>\n\u2013<br \/>\n1200<br \/>\nampia variet\u00e0<br \/>\n2451<br \/>\n\u2013<br \/>\n2100<\/p>\n<p>10\u00a0000<br \/>\n\u2013<br \/>\n\u2013<br \/>\nampia variet\u00e0<br \/>\n\u2013<br \/>\n2200<br \/>\n\u2013<br \/>\n2200<\/p>\n<p>11\u00a0000<br \/>\n\u2013<br \/>\n\u2013<br \/>\n\u2013<br \/>\n\u2013<br \/>\n2200<br \/>\n\u2013<br \/>\n2122<\/p>\n<p>12\u00a0000<br \/>\n\u2013<br \/>\n\u2013<br \/>\n\u2013<br \/>\n\u2013<br \/>\n970<br \/>\n\u2013<br \/>\n1958<\/p>\n<p>13\u00a0000<br \/>\n\u2013<br \/>\n\u2013<br \/>\n\u2013<br \/>\n\u2013<br \/>\n730<br \/>\n\u2013<br \/>\n1897<\/p>\n<p>14\u00a0000<br \/>\n\u2013<br \/>\n\u2013<br \/>\n\u2013<br \/>\n\u2013<br \/>\n590<br \/>\n\u2013<br \/>\n1466<\/p>\n<p>15\u00a0000<br \/>\n\u2013<br \/>\n\u2013<br \/>\n\u2013<br \/>\n\u2013<br \/>\n532<br \/>\n\u2013<br \/>\n1281<\/p>\n<p>\nDal grafico e dalla tabella si evince che oltre 8000 richieste simultanee rimangono solo due contendenti: pre-fork ed epoll. Con l'aumento del carico, il server basato su poll funziona peggio di quello in threading. L'architettura con creazione anticipata di thread costituisce una valida concorrenza per epoll: questo dimostra quanto bene il kernel Linux pianifichi un gran numero di thread.<\/p>\n<h1>Codice sorgente di ZeroHTTPd<\/h1>\n<p>\nCodice sorgente di ZeroHTTPd <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shuveb\/zerohttpd\">qui<\/a><\/noindex>. Per ogni architettura c'\u00e8 una cartella separata.<\/p>\n<pre>ZeroHTTPd\n\u2502\n\u251c\u2500\u2500 01_iterative\n\u2502   \u251c\u2500\u2500 main.c\n\u251c\u2500\u2500 02_forking\n\u2502   \u251c\u2500\u2500 main.c\n\u251c\u2500\u2500 03_preforking\n\u2502   \u251c\u2500\u2500 main.c\n\u251c\u2500\u2500 04_threading\n\u2502   \u251c\u2500\u2500 main.c\n\u251c\u2500\u2500 05_prethreading\n\u2502   \u251c\u2500\u2500 main.c\n\u251c\u2500\u2500 06_poll\n\u2502   \u251c\u2500\u2500 main.c\n\u251c\u2500\u2500 07_epoll\n\u2502    \u2514\u2500\u2500 main.c\n\u251c\u2500\u2500 Makefile\n\u251c\u2500\u2500 public\n\u2502   \u251c\u2500\u2500 index.html\n\u2502   \u2514\u2500\u2500 tux.png\n\u2514\u2500\u2500 templates\n    \u2514\u2500\u2500 guestbook\n        \u2514\u2500\u2500 index.html<\/pre>\n<p>\nOltre alle sette directory per tutte le architetture, nella directory principale ci sono anche due: public e templates. Nella prima si trova il file index.html e l'immagine dello screenshot iniziale. Qui \u00e8 possibile inserire altri file e cartelle, e ZeroHTTPd dovrebbe servire senza problemi questi file statici. Se il percorso nel browser corrisponde al percorso nella cartella public, ZeroHTTPd cerca il file index.html in questa directory. Il contenuto per il libro degli ospiti viene generato dinamicamente. Ha solo una pagina principale, e il suo contenuto \u00e8 basato sul file 'templates\/guestbook\/index.html'. In ZeroHTTPd \u00e8 facile aggiungere pagine dinamiche per l'espansione. L'idea \u00e8 che gli utenti possano aggiungere modelli in questa directory e ampliare ZeroHTTPd secondo necessit\u00e0.<\/p>\n<p>Per costruire tutti e sette i server, esegui <code>make all<\/code> dalla cartella principale \u2014 e tutte le build appariranno in questa directory. I file eseguibili cercano le cartelle public e templates nella directory da cui vengono avviati.<\/p>\n<h1>Linux API<\/h1>\n<p>\nPer comprendere le informazioni in questo ciclo di articoli, non \u00e8 necessario avere una buona conoscenza dell'API di Linux. Tuttavia, consiglio di approfondire l'argomento; ci sono molte risorse di riferimento disponibili online. Anche se toccheremo diverse categorie di API di Linux, ci concentreremo principalmente su processi, thread, eventi e sullo stack di rete. Oltre a libri e articoli sull'API di Linux, \u00e8 utile consultare anche le pagine man per le chiamate di sistema e le funzioni di libreria utilizzate.<\/p>\n<h1>Prestazioni e scalabilit\u00e0<\/h1>\n<p>\nUna nota sulla performance e la scalabilit\u00e0. Teoricamente, non c'\u00e8 alcuna connessione tra di loro. Pu\u00f2 esistere un servizio web che funziona molto bene, con un tempo di risposta nell'ordine di pochi millisecondi, ma che non \u00e8 affatto scalabile. Allo stesso modo, pu\u00f2 esserci un'applicazione web che funziona male, richiedendo diversi secondi per rispondere, ma che scala per gestire decine di migliaia di utenti simultanei. Tuttavia, una combinazione di alta performance e scalabilit\u00e0 \u00e8 molto potente. Le applicazioni ad alte prestazioni, in generale, utilizzano le risorse in modo parsimonioso e, in questo modo, servono pi\u00f9 utenti simultanei su un server, riducendo i costi.<\/p>\n<h1>Compiti CPU e I\/O<\/h1>\n<p>\nInfine, ci sono sempre due tipi di problemi nelle computazioni: per I\/O e CPU. Ricevere richieste via internet (input\/output di rete), gestire file (input\/output di rete e disco), comunicare con il database (input\/output di rete e disco) \u2014 tutto ci\u00f2 \u00e8 considerato operazioni I\/O. Alcune richieste al database possono caricare un po' la CPU (ordinamento, calcolo della media di un milione di risultati, ecc.). La maggior parte delle applicazioni web \u00e8 limitata per ci\u00f2 che riguarda l'I\/O massimo possibile, mentre la CPU \u00e8 raramente utilizzata al massimo della sua potenza. Quando si osserva che una certa operazione di input\/output utilizza molta CPU, \u00e8 probabile che ci\u00f2 indichi una cattiva architettura dell'applicazione. Questo potrebbe significare che le risorse della CPU vengono spese per la gestione dei processi e il passaggio di contesto \u2014 e ci\u00f2 non \u00e8 molto utile. Se stai facendo qualcosa come l'elaborazione di immagini, la conversione di file audio o l'apprendimento automatico, allora l'applicazione richiede risorse CPU potenti. Ma per la maggior parte delle applicazioni non \u00e8 cos\u00ec.<\/p>\n<h1>Maggiore dettaglio sulle architetture server<\/h1>\n<p><\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/unixism.net\/2019\/04\/28\/linux-applications-performance-part-i-iterative-servers\/\">Parte I. Architettura iterativa<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/unixism.net\/2019\/04\/28\/linux-applications-performance-part-ii-forking-servers\/\">Parte II. Server fork<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/unixism.net\/2019\/04\/28\/linux-applications-performance-part-iii-preforked-servers\/\">Parte III. Server pre-fork<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/unixism.net\/2019\/04\/28\/linux-applications-performance-part-iv-threaded-servers\/\">Parte IV. Server con flussi di esecuzione<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/unixism.net\/2019\/04\/28\/linux-applications-performance-part-v-pre-threaded-servers\/\">Parte V. Server con creazione anticipata dei flussi<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/unixism.net\/2019\/04\/28\/linux-applications-performance-part-vi-polling-servers\/\">Parte VI. Architettura basata su poll<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/unixism.net\/2019\/04\/28\/linux-applications-performance-part-vii-epoll-servers\/\">Parte VII. Architettura basata su epoll<\/a><\/noindex><\/li>\n<\/ol>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/455212\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u044b\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u0432\u0441\u0435\u043c\u0435\u0441\u0442\u043d\u043e, \u0430 \u0441\u0440\u0435\u0434\u0438 \u0432\u0441\u0435\u0445 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u043b\u044c\u0432\u0438\u043d\u0443\u044e \u0434\u043e\u043b\u044e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 HTTP. \u0418\u0437\u0443\u0447\u0430\u044f \u043d\u044e\u0430\u043d\u0441\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0443\u0434\u0435\u043b\u044f\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0433\u0434\u0435 \u044d\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f. \u0420\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (Dev) \u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 (Ops) \u043b\u0438\u0448\u044c \u0443\u0445\u0443\u0434\u0448\u0430\u043b\u043e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e. \u041d\u043e \u0441 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043a\u0443\u043b\u044c\u0442\u0443\u0440\u044b DevOps \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u043d\u0435\u0441\u0442\u0438 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0437\u0430 \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-35106","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u044b\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u0432\u0441\u0435\u043c\u0435\u0441\u0442\u043d\u043e, \u0430 \u0441\u0440\u0435\u0434\u0438 \u0432\u0441\u0435\u0445 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u043b\u044c\u0432\u0438\u043d\u0443\u044e \u0434\u043e\u043b\u044e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 HTTP. \u0418\u0437\u0443\u0447\u0430\u044f \u043d\u044e\u0430\u043d\u0441\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0443\u0434\u0435\u043b\u044f\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0433\u0434\u0435 \u044d\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f. \u0420\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (Dev) \u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 (Ops) \u043b\u0438\u0448\u044c \u0443\u0445\u0443\u0434\u0448\u0430\u043b\u043e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e. \u041d\u043e \u0441 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043a\u0443\u043b\u044c\u0442\u0443\u0440\u044b DevOps \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u043d\u0435\u0441\u0442\u0438 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0437\u0430 \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f\" \/>\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\/administrirovanie\/proizvoditelnost-setevyh-prilozhenij-linux-vvedenie\" \/>\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\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 Linux. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u044b\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u0432\u0441\u0435\u043c\u0435\u0441\u0442\u043d\u043e, \u0430 \u0441\u0440\u0435\u0434\u0438 \u0432\u0441\u0435\u0445 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u043b\u044c\u0432\u0438\u043d\u0443\u044e \u0434\u043e\u043b\u044e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 HTTP. \u0418\u0437\u0443\u0447\u0430\u044f \u043d\u044e\u0430\u043d\u0441\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0443\u0434\u0435\u043b\u044f\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0433\u0434\u0435 \u044d\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f. \u0420\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (Dev) \u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 (Ops) \u043b\u0438\u0448\u044c \u0443\u0445\u0443\u0434\u0448\u0430\u043b\u043e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e. \u041d\u043e \u0441 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043a\u0443\u043b\u044c\u0442\u0443\u0440\u044b DevOps \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u043d\u0435\u0441\u0442\u0438 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0437\u0430 \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/proizvoditelnost-setevyh-prilozhenij-linux-vvedenie\" \/>\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=\"2019-10-31T19:02:22+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:02:22+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\udd47Prestazioni delle applicazioni di rete Linux. Introduzione | ProHoster","description":"Le applicazioni web sono ora utilizzate ovunque e tra tutti i protocolli di trasporto, HTTP occupa una quota considerevole. Nello studio delle complessit\u00e0 nello sviluppo delle applicazioni web, la maggior parte presta poco attenzione al sistema operativo su cui queste applicazioni vengono effettivamente eseguite. La divisione tra sviluppo (Dev) e operazioni (Ops) ha solo peggiorato la situazione. Tuttavia, con la diffusione della cultura DevOps, gli sviluppatori iniziano a prendere responsabilit\u00e0 per l'esecuzione delle proprie applicazioni nel cloud, pertanto, per","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/proizvoditelnost-setevyh-prilozhenij-linux-vvedenie","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\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 Linux. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 | ProHoster","og:description":"\u0412\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u044b\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u0432\u0441\u0435\u043c\u0435\u0441\u0442\u043d\u043e, \u0430 \u0441\u0440\u0435\u0434\u0438 \u0432\u0441\u0435\u0445 \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u043b\u044c\u0432\u0438\u043d\u0443\u044e \u0434\u043e\u043b\u044e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 HTTP. \u0418\u0437\u0443\u0447\u0430\u044f \u043d\u044e\u0430\u043d\u0441\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0443\u0434\u0435\u043b\u044f\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0433\u0434\u0435 \u044d\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f. \u0420\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (Dev) \u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 (Ops) \u043b\u0438\u0448\u044c \u0443\u0445\u0443\u0434\u0448\u0430\u043b\u043e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e. \u041d\u043e \u0441 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043a\u0443\u043b\u044c\u0442\u0443\u0440\u044b DevOps \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u043d\u0435\u0441\u0442\u0438 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0437\u0430 \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/proizvoditelnost-setevyh-prilozhenij-linux-vvedenie","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":"2019-10-31T19:02:22+00:00","article:modified_time":"2019-10-31T19:02:22+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35106","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":"2026-01-21 21:51:33","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:09:55","updated":"2026-01-21 21:51:33","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\/35106","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=35106"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/35106\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=35106"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=35106"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=35106"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}