Requisitos de hardware
Al aprovisionar hardware para ejecutar Overleaf, el factor principal a tener en cuenta es cuántos usuarios simultáneos ejecutarán compilaciones. Por ejemplo, si tienes una licencia para 100 usuarios en total, pero solo esperas que unos ~5 trabajen al mismo tiempo, la instalación mínima será suficiente. Si esperas que una proporción mayor trabaje (y compile) simultáneamente, deberías considerar aprovisionar un servidor con especificaciones más altas.Instalación mínima
Se necesita un requisito base mínimo de 2 núcleos y 3 GB de memoria para las operaciones básicas con unos 5 usuarios simultáneos. Este requisito mínimo también será suficiente para grupos más grandes con menos uso simultáneo, o en los que se acepte que los tiempos de compilación sean más largos durante los periodos de uso intenso.Si estás pensando en usar un sistema de archivos basado en NFS (Network File System) para tu instancia pequeña, consulta este apartado de la sección Solución de problemas.
Escalado
Como regla general, para ofrecer un nivel de servicio alto y constante, se debe añadir 1 núcleo de CPU y 1 GB de memoria a la instalación mínima por cada 5-10 usuarios simultáneos. Esto debe tomarse solo como orientación, ya que factores como el tamaño de los documentos habituales (los documentos más grandes consumen más recursos de compilación), la frecuencia con la que compilan los usuarios y la tolerancia a tiempos de compilación más largos durante el uso intenso afectan al nivel de aprovisionamiento necesario. Muchos de nuestros clientes buscan desplegar Server Pro en toda la organización o en equipos grandes. En esas situaciones, nos resulta difícil aconsejar requisitos de configuración concretos, porque los casos de uso y el hardware disponible pueden ser muy variados.
Los clientes que superen los límites de un único servidor grande pueden consultar Escalado horizontal para Server Pro.
Almacenamiento
Desaconsejamos usar Network File System (NFS)/Amazon EFS/Amazon EBS para el almacenamiento de proyectos e historial en configuraciones grandes y explícitamente no lo admitimos para el escalado horizontal. El comportamiento de estos sistemas de archivos no proporciona el rendimiento ni la fiabilidad que Server Pro necesita cuando funciona a gran escala. Cuando el sistema de archivos no puede soportar la carga, la aplicación se bloquea por demasiadas operaciones de E/S bloqueantes. Estos bloqueos pueden provocar que se excedan los bloqueos (locks) basados en Redis, lo que a su vez puede dar lugar a datos de proyecto corruptos. En su lugar, recomendamos usar almacenamiento de objetos compatible con S3. Un rendimiento lento de S3 solo afecta a la subida y descarga de archivos, lo que únicamente provoca un mayor número de conexiones abiertas con tu proveedor de S3 y no afecta al comportamiento del resto de la aplicación. Además, Server Pro puede especificar tiempos de espera razonables en las solicitudes a S3, algo que no es posible para las operaciones de sistema de archivos/E/S a nivel de aplicación.Como referencia, GitLab sigue una postura similar de no admitir NFS/Amazon EFS en su oferta autogestionada.
Configuración específica de Nginx para despliegues grandes
De forma predeterminada, las instancias de Overleaf Server limitan el número de conexiones a 768. Esto incluye las conexiones Websocket persistentes, la navegación HTML de nivel superior y las solicitudes ajax. Cuando se alcanza el límite, es posible que el editor no pueda conectarse, que la página del editor no se cargue por completo y que las solicitudes de compilación fallen. Nginx devolverá respuestas con estado 500 y registraráworker_connections are not enough while connecting to upstream en var/log/nginx/error.log dentro del contenedor sharelatex.
El ajuste worker_connections limita el número de conexiones simultáneas que nginx aceptará por worker. El número de workers se controla con el ajuste worker_processes y está establecido en 4 de forma predeterminada en nuestra configuración de nginx.
Nginx no realiza mucho trabajo en comparación con otras partes del sistema, por lo que estos límites actúan como una medida de seguridad que impide que demasiadas conexiones saturen el sistema. Es preferible descartar pronto algunas conexiones excedentes que ralentizar todas las conexiones.
Las instancias de Overleaf Server exponen variables de entorno para ajustar esta configuración de nginx:
-
NGINX_WORKER_PROCESSESparaworker_processes(valor predeterminado4) -
NGINX_WORKER_CONNECTIONSparaworker_connections(valor predeterminado768) -
NGINX_KEEPALIVE_TIMEOUTparakeepalive_timeout(valor predeterminado65)Si ejecutas otro proxy delante del contenedorsharelatex(p. ej., para la terminación TLS), el valor deNGINX_KEEPALIVE_TIMEOUTen la instancia de Overleaf Server debe ser mayor que el del proxy anterior. Por ejemplo, con otro proceso nginx en el host de Docker nginx-host, estos son dos ejemplos: -
Valor predeterminado de
NGINX_KEEPALIVE_TIMEOUT: usakeepalive_timeout 60s(valor predeterminado en upstream) en nginx-host -
Valor personalizado
NGINX_KEEPALIVE_TIMEOUT=100s: usakeepalive_timeout 90s(valor personalizado en upstream) en nginx-host

