{"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\/es\/blog\/news\/optimizacziya-linux-dlya-obrabotki-1-2-mln-json-zaprosov-v-sekundu","title":{"rendered":"Optimizaci\u00f3n de Linux para procesar 1.2 millones de solicitudes JSON por segundo","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Se ha publicado una gu\u00eda detallada sobre la optimizaci\u00f3n del entorno Linux para lograr el m\u00e1ximo rendimiento en el procesamiento de solicitudes HTTP. Los m\u00e9todos propuestos permitieron aumentar el rendimiento del manejador JSON basado en la biblioteca libreactor en un entorno de Amazon EC2 (4 vCPU) de 224 mil solicitudes API por segundo con la configuraci\u00f3n predeterminada de Amazon Linux 2 con n\u00facleo 4.14 a 1.2 millones de solicitudes por segundo despu\u00e9s de la optimizaci\u00f3n (un aumento del 436%), y tambi\u00e9n llevaron a una reducci\u00f3n del 79% en la latencia al procesar solicitudes. Los m\u00e9todos propuestos no son espec\u00edficos para libreactor y funcionan con otros servidores http, incluidos nginx, Actix, Netty y Node.js (libreactor se utiliz\u00f3 en las pruebas ya que la soluci\u00f3n basada en \u00e9l mostr\u00f3 el mejor rendimiento).      <center><img decoding=\"async\" alt=\"Optimizaci\u00f3n de Linux para procesar 1.2 millones de solicitudes JSON por segundo\" src=\"\/wp-content\/uploads\/2021\/05\/908fb8d92e84a3e7557af7f6c622298e.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Optimizaciones principales:  <\/p>\n<ul>\n<li class=\"l\"> Optimizaci\u00f3n del c\u00f3digo libreactor. Se utiliz\u00f3 como base la versi\u00f3n R18 del conjunto Techempower, que se mejor\u00f3 eliminando el c\u00f3digo para limitar el n\u00famero de n\u00facleos de CPU utilizados (la optimizaci\u00f3n permiti\u00f3 acelerar el rendimiento en un 25-27%), compilando en GCC con las opciones '-O3' (aumento del 5-10%) y '-march-native' (5-10%), reemplazando las llamadas read\/write por recv\/send (5-10%) y reduciendo la sobrecarga al usar pthreads (2-3%). El aumento total del rendimiento despu\u00e9s de la optimizaci\u00f3n del c\u00f3digo fue del 55%, y la capacidad de respuesta aument\u00f3 de 224k req\/s a 347k req\/s.\n<li class=\"l\"> Desactivaci\u00f3n de la protecci\u00f3n contra vulnerabilidades causadas por la ejecuci\u00f3n especulativa de instrucciones. El uso de par\u00e1metros al cargar el n\u00facleo 'nospectre_v1 nospectre_v2 pti=off mds=off tsx_async_abort=off' permiti\u00f3 aumentar el rendimiento en un 28%, y la capacidad de respuesta aument\u00f3 de 347k req\/s a 446k req\/s. Por separado, el aumento con el par\u00e1metro 'nospectre_v1' (protecci\u00f3n contra Spectre v1 + SWAPGS) fue del 1-2%, 'nospectre_v2' (protecci\u00f3n contra Spectre v2) \u2014 15-20%, 'pti=off' (Spectre v3\/Meltdown) \u2014 6%, 'mds=off tsx_async_abort=off' (MDS\/Zombieload y TSX Asynchronous Abort) \u2014 6%. Se dejaron sin cambios las configuraciones para la protecci\u00f3n contra ataques L1TF\/Foreshadow (l1tf=flush), iTLB multihit, Speculative Store Bypass y SRBDS, que no afectaron el rendimiento, ya que no se cruzaron con la configuraci\u00f3n de prueba (por ejemplo, son espec\u00edficas para <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/es\/vps\/abuzoustojchivye-vps\/\"   title=\"KVM\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"4395\">KVM<\/a>, virtualizaci\u00f3n anidada y otros modelos de CPU).\n<li class=\"l\"> Desactivaci\u00f3n de los mecanismos de auditor\u00eda y bloqueo de llamadas al sistema mediante el comando 'auditctl -a never,task' y especificando la opci\u00f3n '--security-opt seccomp=unconfined' al iniciar el contenedor docker. El aumento total del rendimiento fue del 11%, y la capacidad de respuesta aument\u00f3 de 446k req\/s a 495k req\/s.\n<li class=\"l\"> Desactivaci\u00f3n de iptables\/netfilter mediante la descarga de los m\u00f3dulos del n\u00facleo relacionados. La idea de desactivar el cortafuegos, que no se utilizaba en la soluci\u00f3n del servidor espec\u00edfica, fue impulsada por los resultados de la profilaci\u00f3n, los cuales indicaron que la funci\u00f3n nf_hook_slow consum\u00eda el 18% del tiempo. Se se\u00f1ala que nftables opera de manera m\u00e1s eficiente que iptables, pero en Amazon Linux todav\u00eda se utiliza iptables. Tras desactivar iptables, el aumento en el rendimiento fue del 22%, y el ancho de banda aument\u00f3 de 495k req\/s a 603k req\/s.\n<li class=\"l\"> Reducci\u00f3n de la migraci\u00f3n de manejadores entre diferentes n\u00facleos de CPU para mejorar la eficiencia del uso de la cach\u00e9 de procesador. La optimizaci\u00f3n se realiz\u00f3 tanto a nivel de vinculaci\u00f3n de procesos de libreactor a n\u00facleos de CPU (CPU Pinning), como mediante la fijaci\u00f3n de los manejadores de red del n\u00facleo (Receive Side Scaling). Por ejemplo, se desactiv\u00f3 irqbalance y se establecieron expl\u00edcitamente las vinculaciones de colas a CPU en \/proc\/irq\/$IRQ\/smp_affinity_list. Para utilizar el mismo n\u00facleo de CPU para procesar el proceso libreactor y la cola de red de paquetes entrantes, se implement\u00f3 un manejador BPF propio, conectado mediante la configuraci\u00f3n de la bandera SO_ATTACH_REUSEPORT_CBPF al crear el socket. Para vincular las colas de paquetes salientes a la CPU, se modificaron las configuraciones en \/sys\/class\/net\/eth0\/queues\/tx-&lt;n&gt;\/xps_cpus. El aumento total en el rendimiento fue del 38%, y el ancho de banda aument\u00f3 de 603k req\/s a 834k req\/s.\n<li class=\"l\"> Optimizaci\u00f3n del manejo de interrupciones y uso de polling. La activaci\u00f3n del modo adaptive-rx en el controlador ENA y las manipulaciones con sysctl net.core.busy_read permitieron aumentar el rendimiento en un 28% (la capacidad de respuesta aument\u00f3 de 834k req\/s a 1.06M req\/s, y las latencias disminuyeron de 361\u00b5s a 292\u00b5s).\n<li class=\"l\"> Desactivaci\u00f3n de servicios del sistema que causan bloqueos adicionales en la pila de red. La desactivaci\u00f3n de dhclient y la configuraci\u00f3n <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/es\/lir\/ipv4\/\"   title=\"IP\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"683\">IP<\/a> manualmente condujo a un aumento en el rendimiento del 6%, y el ancho de banda aument\u00f3 de 1.06M req\/s a 1.12M req\/s. La raz\u00f3n del impacto de dhclient en el rendimiento se encuentra en el an\u00e1lisis del tr\u00e1fico utilizando un socket en bruto.\n<li class=\"l\"> Lucha contra el Spin Lock. La transici\u00f3n de la pila de red al modo 'noqueue' a trav\u00e9s de sysctl 'net.core.default_qdisc=noqueue' y 'tc qdisc replace dev eth0 root mq' result\u00f3 en un aumento del rendimiento del 2%, y la capacidad de respuesta aument\u00f3 de 1.12M req\/s a 1.15M req\/s.\n<li class=\"l\"> Las optimizaciones finales menores, como deshabilitar GRO (Generic Receive Offload) con el comando \u00abethtool -K eth0 gro off\u00bb y cambiar el algoritmo de control de congesti\u00f3n de cubic a reno mediante sysctl \u00abnet.ipv4.tcp_congestion_control=reno\u00bb. El aumento general en el rendimiento fue del 4%. El rendimiento se increment\u00f3 de 1.15M req\/s a 1.2M req\/s.          <\/ul>\n<p>Adem\u00e1s de las optimizaciones implementadas, el art\u00edculo tambi\u00e9n analiza m\u00e9todos que no llevaron al aumento esperado en el rendimiento. Por ejemplo, resultaron ineficaces:    <\/p>\n<ul>\n<li class=\"l\"> El lanzamiento independiente de libreactor no mostr\u00f3 diferencias en rendimiento en comparaci\u00f3n con el lanzamiento en un contenedor. La sustituci\u00f3n de writev por send, el aumento de maxevents en epoll_wait, y los experimentos con versiones y banderas de GCC no tuvieron efecto (el efecto fue notable solo para las banderas \u00ab-O3\u00bb y \u00ab-march-native\u00bb).\n<li class=\"l\"> La actualizaci\u00f3n del n\u00facleo de Linux a las versiones 4.19 y 5.4 no afect\u00f3 el rendimiento, al igual que el uso de los schedulers SCHED_FIFO y SCHED_RR, y las manipulaciones de sysctl kernel.sched_min_granularity_ns, kernel.sched_wakeup_granularity_ns, transparent_hugepages=never, skew_tick=1 y clocksource=tsc.\n<li class=\"l\"> En el controlador ENA, la activaci\u00f3n de los modos Offload (segmentaci\u00f3n, scatter-gather, checksum rx\/tx), la compilaci\u00f3n con la bandera \u00ab-O3\u00bb y la aplicaci\u00f3n de los par\u00e1metros ena.rx_queue_size y ena.force_large_llq_header no tuvieron efecto.\n<li class=\"l\"> Los cambios en la pila de red no llevaron a un aumento del rendimiento:\n<ul>\n<li>Desactivaci\u00f3n de IPv6: ipv6.disable=1<\/li>\n<li>Desactivaci\u00f3n de VLAN: modprobe -rv 8021q<\/li>\n<li>Desactivaci\u00f3n de la comprobaci\u00f3n de la fuente del paquete\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 (efecto 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>Fuente: <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\/es\/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=\"es_ES\" \/>\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\/es\/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\udd47Optimizaci\u00f3n de Linux para procesar 1.2 millones de solicitudes JSON por segundo | ProHoster","description":"Se ha publicado una gu\u00eda detallada sobre la optimizaci\u00f3n del entorno Linux para lograr el m\u00e1ximo rendimiento en el procesamiento de solicitudes HTTP.","canonical_url":"https:\/\/prohoster.info\/es\/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":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/100221","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=100221"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/100221\/revisions"}],"predecessor-version":[{"id":164272,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/100221\/revisions\/164272"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/100222"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=100221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=100221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=100221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}