Red de conocimiento informático - Material del sitio web - Cómo utilizar el almacenamiento en búfer y la optimización de la caché de Nginx para mejorar el rendimiento

Cómo utilizar el almacenamiento en búfer y la optimización de la caché de Nginx para mejorar el rendimiento

Un problema con el proxy inverso es que cuando se utiliza el proxy para una gran cantidad de usuarios, aumentará el impacto en el rendimiento del proceso del servidor. En la mayoría de los casos, esto se puede mitigar en gran medida aprovechando las capacidades de almacenamiento en búfer y caché de Nginx.

Al realizar proxy a otro servidor, dos velocidades de conexión diferentes afectarán la experiencia del cliente:

La conexión del cliente al proxy Nginx.

Conexión desde el proxy Nginx al servidor backend.

Nginx tiene la capacidad de optimizar estas conexiones y ajustar su comportamiento.

Sin almacenamiento en búfer, los datos se envían desde el servidor del proxy y comienzan a enviarse al cliente inmediatamente. Si se supone que el cliente es rápido, el almacenamiento en búfer se puede desactivar para enviar datos al cliente lo más rápido posible. Con el almacenamiento en búfer, el proxy Nginx almacenará temporalmente la respuesta del backend y luego entregará datos al cliente a pedido. Permita que el servidor Nginx cierre la conexión con el backend si el cliente es lento. Luego puede procesar la distribución de datos a los clientes a cualquier velocidad posible.

Nginx tiene un diseño de almacenamiento en búfer de forma predeterminada porque los clientes tienden a tener velocidades de conexión muy diferentes. Podemos ajustar el comportamiento del almacenamiento en búfer con las siguientes directivas. Se puede configurar en HTTP, servidor o ubicación. Es importante recordar que la directiva de tamaño se configura por solicitud, por lo que aumentarla más allá de sus necesidades afectará su rendimiento si hay muchas solicitudes de clientes:

proxy_buffering: esta directiva controla si el almacenamiento en búfer es activado. De forma predeterminada, su valor es "activado".

proxy_buffers: Esta directiva controla el número (primer parámetro) y el tamaño (segundo parámetro) de los buffers de respuesta del proxy. La configuración predeterminada es 8 buffers equivalentes a una página de memoria (4K u 8K). Aumentar el número de buffers le permite almacenar más información en buffer.

proxy_buffer_size: el tamaño del búfer del encabezado de respuesta del servidor backend. Contiene encabezados y está separado de otras partes de la respuesta. Esta directiva establece el tamaño del búfer para la parte de respuesta. De forma predeterminada, tiene el mismo tamaño que proxy_buffers, pero dado que se usa para información de encabezado, generalmente se puede establecer en un valor más bajo.

proxy_busy_buffers_size: Esta directiva establece el tamaño máximo de los buffers marcados como "listos para el cliente". El cliente puede leer datos de un búfer a la vez, y el búfer se coloca en una cola y se envía al cliente en lotes. Esta directiva controla la cantidad de espacio de búfer permitido en este estado.

proxy_max_temp_file_size: Este es el tamaño máximo de archivos temporales en el disco que se pueden utilizar para cada solicitud. Estos se crean cuando la respuesta ascendente es demasiado grande para caber en el búfer.

proxy_temp_file_write_size: esta es la cantidad de datos que Nginx escribe en el archivo temporal al mismo tiempo cuando la respuesta del servidor proxy es demasiado grande.

proxy_temp_path: cuando la respuesta del servidor ascendente es demasiado grande para almacenarse en el área de búfer configurada, Nginx almacena la ruta del disco duro del archivo temporal.

Como puede ver, Nginx proporciona bastantes directivas diferentes para ajustar el comportamiento del almacenamiento en búfer. La mayoría de las veces, no tienes que preocuparte demasiado por eso, pero puede resultar útil para modificar algunos valores. Probablemente los ajustes más útiles sean las directivas proxy_buffers y proxy_buffer_size.