{"id":33707,"date":"2019-10-31T21:54:17","date_gmt":"2019-10-31T18:54:17","guid":{"rendered":"https:\/\/prohoster.info\/blog\/inogda-bolshe-eto-menshe-kogda-umenshenie-nagruzki-privodit-k-uvelicheniyu-zaderzhki\/"},"modified":"2019-10-31T21:54:17","modified_gmt":"2019-10-31T18:54:17","slug":"inogda-bolshe-eto-menshe-kogda-umenshenie-nagruzki-privodit-k-uvelicheniyu-zaderzhki","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/inogda-bolshe-eto-menshe-kogda-umenshenie-nagruzki-privodit-k-uvelicheniyu-zaderzhki","title":{"rendered":"A veces m\u00e1s es menos. Cuando la reducci\u00f3n de la carga conduce a un aumento de la latencia","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Como en <noindex><a rel=\"nofollow\" href=\"https:\/\/mahdytech.com\/2019\/01\/13\/curious-case-999-latency-hike\/\">la mayor\u00eda de las publicaciones<\/a><\/noindex>, surgi\u00f3 un problema con el servicio distribuido, llam\u00e9moslo Elvin. Esta vez no fui yo quien detect\u00f3 el problema; me lo comunicaron los chicos del lado del cliente.<\/p>\n<p>Una vez, me despert\u00e9 de un correo descontento debido a grandes retrasos con Elvin, el cual plane\u00e1bamos lanzar en breve. En particular, el cliente experiment\u00f3 un retraso en el percentil 99 de alrededor de 50 ms, mucho m\u00e1s alto que nuestro presupuesto de latencia. Fue sorprendente, ya que hab\u00eda probado el servicio minuciosamente, especialmente en t\u00e9rminos de latencia, un tema que suele generar muchas quejas.<\/p>\n<p>Antes de pasar Elvin a las pruebas, realic\u00e9 muchos experimentos con 40 mil solicitudes por segundo (QPS), todos mostraron una latencia de menos de 10 ms. Estaba dispuesto a afirmar que no estaba de acuerdo con sus resultados. Pero al mirar nuevamente el correo, not\u00e9 algo nuevo: no hab\u00eda probado precisamente las condiciones que mencionaron, su QPS era mucho m\u00e1s bajo que el m\u00edo. Yo hab\u00eda probado con 40k QPS, y ellos solo con 1k. Realic\u00e9 otro experimento, esta vez con un QPS m\u00e1s bajo, solo para satisfacerlos.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nDado que estoy escribiendo esto en el blog, probablemente ya lo has adivinado: sus cifras resultaron ser correctas. Revis\u00e9 mi cliente virtual una y otra vez, obteniendo siempre el mismo resultado: un bajo n\u00famero de solicitudes no solo aumentaba la latencia, sino que tambi\u00e9n incrementaba el n\u00famero de solicitudes con latencia superior a 10 ms. En otras palabras, con 40k QPS, alrededor de 50 solicitudes por segundo superaban los 50 ms, mientras que con 1k QPS hab\u00eda 100 solicitudes cada segundo por encima de los 50 ms. \u00a1Paradoja!<\/p>\n<p><img decoding=\"async\" alt=\"A veces m\u00e1s es menos. Cuando la reducci\u00f3n de la carga conduce a un aumento de la latencia\" src=\"\/wp-content\/uploads\/2019\/05\/d181859376e2befad9ed631e8f8ff168.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h1>Acotando la b\u00fasqueda<\/h1>\n<p>\nAl enfrentar un problema de latencia en un sistema distribuido con muchos componentes, lo primero que hay que hacer es elaborar una lista corta de sospechosos. Profundicemos un poco m\u00e1s en la arquitectura de Elvin:<\/p>\n<p><img decoding=\"async\" alt=\"A veces m\u00e1s es menos. Cuando la reducci\u00f3n de la carga conduce a un aumento de la latencia\" src=\"\/wp-content\/uploads\/2019\/05\/9b10198772b0e53890eb94d5e5c9afd0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUn buen punto de partida es una lista de las transiciones de entrada\/salida realizadas (llamadas de red\/b\u00fasquedas en disco, etc.). Intentemos descubrir d\u00f3nde est\u00e1 la latencia. Adem\u00e1s del obvio E\/S con el cliente, Elvin hace un paso adicional: se comunica con el almacenamiento de datos. Sin embargo, este almacenamiento opera en el mismo cl\u00faster que Elvin, por lo que la latencia all\u00ed deber\u00eda ser menor que con el cliente. As\u00ed que, la lista de sospechosos es:<\/p>\n<ol>\n<li>Llamada de red del cliente a Elvin.\n<\/li>\n<li>Llamada de red de Elvin al almacenamiento de datos.\n<\/li>\n<li>B\u00fasqueda en disco en el almacenamiento de datos.\n<\/li>\n<li>Llamada de red desde el almacenamiento de datos a Elvin.\n<\/li>\n<li>Llamada de red de Elvin al cliente.<\/li>\n<\/ol>\n<p>\nIntentemos eliminar algunos puntos.<\/p>\n<h3>El almacenamiento de datos no tiene nada que ver.<\/h3>\n<p>\nPrimero convert\u00ed a Elvin en un servidor ping-ping, que no procesa solicitudes. Al recibir una solicitud, devuelve una respuesta vac\u00eda. Si la latencia disminuye, hay un error en la implementaci\u00f3n de Elvin o en el almacenamiento de datos\u2014nada extraordinario. En el primer experimento, obtenemos este gr\u00e1fico:<\/p>\n<p><img decoding=\"async\" alt=\"A veces m\u00e1s es menos. Cuando la reducci\u00f3n de la carga conduce a un aumento de la latencia\" src=\"\/wp-content\/uploads\/2019\/05\/bd8fed2b2cc0d07946d1c4a868ae36b3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nComo podemos ver, al usar el servidor ping-ping no hay mejoras observables. Esto significa que el almacenamiento de datos no aumenta la latencia, y la lista de sospechosos se reduce a la mitad:<\/p>\n<ol>\n<li>Llamada de red del cliente a Elvin.\n<\/li>\n<li>Llamada de red de Elvin al cliente.<\/li>\n<\/ol>\n<p>\n\u00a1Genial! La lista se est\u00e1 reduciendo r\u00e1pidamente. Pens\u00e9 que casi hab\u00eda averiguado la causa.<\/p>\n<h3>gRPC<\/h3>\n<p>\nEs hora de presentarles un nuevo jugador: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/grpc\/grpc\">gRPC<\/a><\/noindex>. Esta es una biblioteca de c\u00f3digo abierto de Google para comunicaci\u00f3n intraproceso. <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Remote_procedure_call\">RPC<\/a><\/noindex>. Aunque <code>gRPC<\/code> est\u00e1 bien optimizada y es ampliamente utilizada, es la primera vez que la utilizo en un sistema de tal escala, y esperaba que mi implementaci\u00f3n fuera sub\u00f3ptima\u2014por decirlo de alguna forma.<\/p>\n<p>La existencia <code>gRPC<\/code> en la pila plante\u00f3 una nueva pregunta: \u00bfpodr\u00eda ser mi implementaci\u00f3n o el propio <code>gRPC<\/code> causa el problema de latencia? A\u00f1adimos un nuevo sospechoso a la lista:<\/p>\n<ol>\n<li>El cliente llama a la biblioteca <code>gRPC<\/code>\n<\/li>\n<li>La biblioteca <code>gRPC<\/code> en el cliente ejecuta una llamada de red de la biblioteca <code>gRPC<\/code> en el servidor\n<\/li>\n<li>La biblioteca <code>gRPC<\/code> se comunica con Elvin (sin operaciones en el caso del servidor ping-pong)<\/li>\n<\/ol>\n<p>\nPara que entiendan c\u00f3mo es el c\u00f3digo, mi implementaci\u00f3n del cliente\/Elvin no se desv\u00eda mucho de los ejemplos de cliente-servidor <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/grpc\/grpc\/tree\/v1.19.0\/examples\/cpp\/helloworld\">as\u00edncronos.<\/a><\/noindex>.<\/p>\n<blockquote><p><i>Nota: la lista anterior est\u00e1 un poco simplificada, ya que <code>gRPC<\/code> permite el uso de un modelo de flujo propio (\u00bfplantilla?) en el que se entrelazan la pila de ejecuci\u00f3n <code>gRPC<\/code> y la implementaci\u00f3n del usuario. Por simplicidad, nos mantendremos en este modelo.<\/i><\/p><\/blockquote>\n<p><\/p>\n<h3>El perfilado lo resolver\u00e1 todo.<\/h3>\n<p>\nDespu\u00e9s de descartar el almacenamiento de datos, pens\u00e9 que casi hab\u00eda terminado: \u00ab\u00a1Ahora es f\u00e1cil! Aplicaremos el perfil y descubriremos d\u00f3nde ocurre la latencia\u00bb. Soy <noindex><a rel=\"nofollow\" href=\"https:\/\/mahdytech.com\/2019\/01\/13\/curious-case-999-latency-hike\/\">un gran aficionado al perfilado preciso,<\/a><\/noindex>porque el CPU es muy r\u00e1pido y a menudo no es el cuello de botella. La mayor\u00eda de las latencias ocurren cuando el procesador debe detener el procesamiento para hacer algo m\u00e1s. El perfilado preciso del CPU est\u00e1 dise\u00f1ado precisamente para esto: registra de manera exacta todos los <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tutorialspoint.com\/what-is-context-switching-in-operating-system\">cambios de contexto<\/a><\/noindex> y proporciona informaci\u00f3n sobre d\u00f3nde ocurren las latencias.<\/p>\n<p>Tom\u00e9 cuatro perfiles: para un alto QPS (baja latencia) y con un servidor de ping-pong en bajo QPS (alta latencia), tanto del lado del cliente como del servidor. Y por si acaso, tambi\u00e9n tom\u00e9 una muestra del perfil del procesador. Al comparar los perfiles, generalmente busco una pila de llamadas an\u00f3mala. Por ejemplo, del lado malo con alta latencia, hay muchas m\u00e1s conmutaciones de contexto (10 veces m\u00e1s o m\u00e1s). Pero en mi caso, la cantidad de conmutaciones de contexto coincid\u00eda pr\u00e1cticamente. Para mi horror, no hab\u00eda nada significativo all\u00ed.<\/p>\n<h1>Depuraci\u00f3n adicional<\/h1>\n<p>\nEstaba desesperado. No sab\u00eda qu\u00e9 otras herramientas utilizar, y mi siguiente plan consist\u00eda esencialmente en repetir experimentos con diferentes variaciones, en lugar de diagnosticar claramente el problema.<\/p>\n<h3>Qu\u00e9 pasar\u00eda si<\/h3>\n<p>\nDesde el principio, me preocupaba un tiempo de latencia espec\u00edfico de 50 ms. Es un tiempo muy alto. Decid\u00ed que ir\u00eda cortando trozos de c\u00f3digo hasta que pudiera averiguar exactamente qu\u00e9 parte estaba causando este error. Luego sigui\u00f3 un experimento que funcion\u00f3.<\/p>\n<p>Como suele suceder, a posteriori parece que todo era obvio. Coloqu\u00e9 al cliente en una m\u00e1quina con Elvin y envi\u00e9 una solicitud a <code>localhost<\/code>. \u00a1Y la latencia aumentada desapareci\u00f3!<\/p>\n<p><img decoding=\"async\" alt=\"A veces m\u00e1s es menos. Cuando la reducci\u00f3n de la carga conduce a un aumento de la latencia\" src=\"\/wp-content\/uploads\/2019\/05\/2d8466625a264abe2110a65592ee0da8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAlgo estaba mal en la red.<\/p>\n<h3>Desarrollando habilidades de ingeniero de redes<\/h3>\n<p>\nDebo confesar: mis conocimientos de tecnolog\u00edas de red son terribles, especialmente considerando que trabajo con ellas a diario. Pero la red era el principal sospechoso, y necesitaba aprender c\u00f3mo depurarla.<\/p>\n<p>Afortunadamente, internet ama a quienes quieren aprender. La combinaci\u00f3n de ping y tracert parec\u00eda un buen comienzo para depurar problemas de transporte de red.<\/p>\n<p>Primero, ejecut\u00e9 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/en-us\/sysinternals\/downloads\/psping\">PsPing<\/a><\/noindex> en el puerto TCP de Elvin. Us\u00e9 los par\u00e1metros predeterminados, nada especial. De m\u00e1s de mil pings, ninguno excedi\u00f3 los 10 ms, excepto el primero para calentar. Esto contradice el aumento de latencia observado de 50 ms en el percentil 99: all\u00ed, por cada 100 solicitudes, deber\u00edamos haber visto alrededor de una solicitud con una latencia de 50 ms.<\/p>\n<p>Luego prob\u00e9 <noindex><a rel=\"nofollow\" href=\"https:\/\/support.microsoft.com\/en-ca\/help\/314868\/how-to-use-tracert-to-troubleshoot-tcp-ip-problems-in-windows\">tracert<\/a><\/noindex>: tal vez el problema est\u00e9 en uno de los nodos en la ruta entre Elvin y el cliente. Pero el tracer tambi\u00e9n volvi\u00f3 con las manos vac\u00edas.<\/p>\n<p>Por lo tanto, la causa de la latencia no era mi c\u00f3digo, ni la implementaci\u00f3n de gRPC, ni la red. Ya comenzaba a preocuparme de que nunca lo entender\u00eda.<\/p>\n<h3>Ahora, \u00bfen qu\u00e9 sistema operativo estamos?<\/h3>\n<p>\n<code>gRPC<\/code> se utiliza ampliamente en Linux, pero para Windows es ex\u00f3tico. Decid\u00ed realizar un experimento que funcion\u00f3: cre\u00e9 una m\u00e1quina virtual Linux, compil\u00e9 Alvin para Linux y la implement\u00e9.<\/p>\n<p><img decoding=\"async\" alt=\"A veces m\u00e1s es menos. Cuando la reducci\u00f3n de la carga conduce a un aumento de la latencia\" src=\"\/wp-content\/uploads\/2019\/05\/ee74c16de7e1ac6c286e401660e94ca1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nY esto es lo que result\u00f3: en el servidor ping-pong de Linux no hab\u00eda tales latencias como en el nodo equivalente de Windows, aunque la fuente de datos no difer\u00eda. Resulta que el problema est\u00e1 en la implementaci\u00f3n de gRPC para Windows.<\/p>\n<h3>El algoritmo de Nagle<\/h3>\n<p>\nDurante todo este tiempo pens\u00e9 que me faltaba una bandera <code>gRPC<\/code>. Ahora entend\u00ed que en realidad es la <code>gRPC<\/code> falta de una bandera de Windows. Encontr\u00e9 una biblioteca interna de RPC, en la que estaba seguro de que funcionar\u00eda bien para todas las banderas establecidas <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/desktop\/winsock\/windows-sockets-start-page-2\">Winsock<\/a><\/noindex>. Luego a\u00f1ad\u00ed todas estas banderas a gRPC y desplegu\u00e9 Alvin en Windows, en el servidor ping-pong corregido para Windows!<\/p>\n<p><img decoding=\"async\" alt=\"A veces m\u00e1s es menos. Cuando la reducci\u00f3n de la carga conduce a un aumento de la latencia\" src=\"\/wp-content\/uploads\/2019\/05\/ce3a4066c78f9f6a63fd68578224d6e5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Casi<\/i> listo: empec\u00e9 a eliminar las banderas a\u00f1adidas una por una, hasta que regres\u00f3 la regresi\u00f3n, as\u00ed que pude determinar con precisi\u00f3n su causa. Era el infame <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/desktop\/api\/winsock\/nf-winsock-setsockopt\">TCP_NODELAY<\/a><\/noindex>, un conmutador del algoritmo de Nagle.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Nagle%27s_algorithm\">El algoritmo de Nagle<\/a><\/noindex> intenta reducir la cantidad de paquetes enviados por la red, retrasando el env\u00edo de mensajes hasta que el tama\u00f1o del paquete supere cierta cantidad de bytes. Aunque esto puede ser agradable para el usuario promedio, es destructivo para los servidores en tiempo real, ya que el sistema operativo retrasar\u00e1 algunos mensajes, causando latencias en un bajo QPS. El <code>gRPC<\/code> este flag estaba habilitado en la implementaci\u00f3n de Linux para sockets TCP, pero no para Windows. Yo lo <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/grpc\/grpc\/commit\/1dce1009e67ea4b5934a61b1bcf8a217bd12cc76\">arregl\u00e9<\/a><\/noindex>.<\/p>\n<h1>Conclusi\u00f3n<\/h1>\n<p>\nGrandes latencias en un bajo QPS fueron causadas por la optimizaci\u00f3n del sistema operativo. Mirando hacia atr\u00e1s, el perfilado no detect\u00f3 la latencia porque se realiz\u00f3 en modo n\u00facleo, no en <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.codinghorror.com\/understanding-user-and-kernel-mode\/\">modo de usuario<\/a><\/noindex>. No s\u00e9 si se puede observar el algoritmo de Nagle a trav\u00e9s de capturas de ETW, pero ser\u00eda interesante.<\/p>\n<p>En cuanto al experimento localhost, probablemente no se trat\u00f3 del c\u00f3digo de red real, y el algoritmo de Nagle no se activ\u00f3, as\u00ed que los problemas de latencia desaparecieron cuando el cliente se dirigi\u00f3 a Alvin a trav\u00e9s de localhost.<\/p>\n<p>\u00a1La pr\u00f3xima vez que veas un aumento en la latencia al reducir la cantidad de solicitudes por segundo, el algoritmo de Nagle deber\u00eda estar en tu lista de sospechosos!<br \/>\n<br \/>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/451904\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041a\u0430\u043a \u0438 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u0441\u0442\u043e\u0432, \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u043e\u0439, \u043d\u0430\u0437\u043e\u0432\u0451\u043c \u044d\u0442\u0443 \u0441\u043b\u0443\u0436\u0431\u0443 \u042d\u043b\u0432\u0438\u043d. \u041d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u044f \u043d\u0435 \u0441\u0430\u043c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043c\u043d\u0435 \u0441\u043e\u043e\u0431\u0449\u0438\u043b\u0438 \u0440\u0435\u0431\u044f\u0442\u0430 \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438. \u041e\u0434\u043d\u0430\u0436\u0434\u044b \u044f \u043f\u0440\u043e\u0441\u043d\u0443\u043b\u0441\u044f \u043e\u0442 \u043d\u0435\u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0438\u0441\u044c\u043c\u0430 \u0438\u0437-\u0437\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a \u0443 \u042d\u043b\u0432\u0438\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u0432\u0440\u0435\u043c\u044f. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043a\u043b\u0438\u0435\u043d\u0442 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439 99-\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0438\u043b\u044f \u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":25389,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-33707","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041a\u0430\u043a \u0438 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u0441\u0442\u043e\u0432, \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u043e\u0439, \u043d\u0430\u0437\u043e\u0432\u0451\u043c \u044d\u0442\u0443 \u0441\u043b\u0443\u0436\u0431\u0443 \u042d\u043b\u0432\u0438\u043d.\" \/>\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\/administrirovanie\/inogda-bolshe-eto-menshe-kogda-umenshenie-nagruzki-privodit-k-uvelicheniyu-zaderzhki\" \/>\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\u0418\u043d\u043e\u0433\u0434\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u2014 \u044d\u0442\u043e \u043c\u0435\u043d\u044c\u0448\u0435. \u041a\u043e\u0433\u0434\u0430 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044e \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041a\u0430\u043a \u0438 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u0441\u0442\u043e\u0432, \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u043e\u0439, \u043d\u0430\u0437\u043e\u0432\u0451\u043c \u044d\u0442\u0443 \u0441\u043b\u0443\u0436\u0431\u0443 \u042d\u043b\u0432\u0438\u043d.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/inogda-bolshe-eto-menshe-kogda-umenshenie-nagruzki-privodit-k-uvelicheniyu-zaderzhki\" \/>\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-31T18:54:17+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:54:17+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\udd47A veces, menos es m\u00e1s. Cuando reducir la carga lleva a un aumento en la latencia | ProHoster","description":"Como en la mayor\u00eda de los posts, surgi\u00f3 un problema con el servicio distribuido, llamaremos a este servicio Alvin.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/inogda-bolshe-eto-menshe-kogda-umenshenie-nagruzki-privodit-k-uvelicheniyu-zaderzhki","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\u0418\u043d\u043e\u0433\u0434\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u2014 \u044d\u0442\u043e \u043c\u0435\u043d\u044c\u0448\u0435. \u041a\u043e\u0433\u0434\u0430 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044e \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 | ProHoster","og:description":"\u041a\u0430\u043a \u0438 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u0441\u0442\u043e\u0432, \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0441\u043b\u0443\u0436\u0431\u043e\u0439, \u043d\u0430\u0437\u043e\u0432\u0451\u043c \u044d\u0442\u0443 \u0441\u043b\u0443\u0436\u0431\u0443 \u042d\u043b\u0432\u0438\u043d.","og:url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/inogda-bolshe-eto-menshe-kogda-umenshenie-nagruzki-privodit-k-uvelicheniyu-zaderzhki","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-31T18:54:17+00:00","article:modified_time":"2019-10-31T18:54:17+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"33707","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 16:23:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:35:31","updated":"2026-01-21 16:23:19","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\/33707","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=33707"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/33707\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/25389"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=33707"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=33707"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=33707"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}