Hardwarevereisten
Bij het inrichten van hardware voor Overleaf is de belangrijkste factor hoeveel gelijktijdige gebruikers compilaties zullen uitvoeren. Als je bijvoorbeeld een licentie hebt voor in totaal 100 gebruikers, maar verwacht dat er slechts ~5 tegelijk actief zijn, volstaat de minimale installatie. Als je verwacht dat een groter deel tegelijk werkt (en compileert), overweeg dan een server met hogere specificaties.Minimale installatie
Voor basisgebruik met ongeveer 5 gelijktijdige gebruikers is minimaal 2 cores en 3 GB geheugen vereist. Deze minimumvereiste volstaat ook voor grotere groepen waarin minder gelijktijdig gebruik plaatsvindt, of waarin langere compileertijden tijdens drukke momenten acceptabel zijn.Als je overweegt een bestandssysteem op basis van NFS (Network File System) te gebruiken voor je kleine instantie, bekijk dan dit onderdeel in de sectie Probleemoplossing.
Schalen
Als vuistregel geldt dat je, voor een hoog en consistent serviceniveau, voor elke 5-10 gelijktijdige gebruikers 1 CPU-core en 1 GB geheugen aan de minimale installatie moet toevoegen. Zie dit slechts als richtlijn: factoren zoals de grootte van typische documenten (grotere documenten verbruiken meer compileerresources), hoe vaak gebruikers compileren en hoeveel tolerantie er is voor langere compileertijden bij intensief gebruik, hebben allemaal invloed op de benodigde capaciteit. Veel van onze klanten willen Server Pro organisatiebreed of voor grote teams uitrollen. In die situaties is het lastig voor ons om specifieke installatievereisten te adviseren, omdat de use cases en de beschikbare onderliggende hardware sterk kunnen verschillen.
Klanten die de grenzen van één grote server overschrijden, kunnen kijken naar Horizontaal schalen voor Server Pro.
Opslag
We raden het gebruik van Network File System (NFS)/Amazon EFS/Amazon EBS voor project-/geschiedenisopslag in grotere opstellingen af en ondersteunen dit uitdrukkelijk niet bij horizontaal schalen. Deze bestandssystemen leveren niet de prestaties en betrouwbaarheid die Server Pro op grote schaal nodig heeft. Wanneer het bestandssysteem de belasting niet kan bijbenen, loopt de applicatie vast door te veel blokkerende IO-operaties. Deze vertragingen kunnen ertoe leiden dat op Redis gebaseerde locks verlopen, wat op zijn beurt kan resulteren in beschadigde projectgegevens. We raden in plaats daarvan aan S3-compatibele objectopslag te gebruiken. Trage S3-prestaties hebben alleen invloed op het uploaden/downloaden van bestanden, wat slechts leidt tot een verhoogd aantal open verbindingen met je S3-provider en verder geen invloed heeft op het gedrag van de rest van de applicatie. Bovendien kan Server Pro redelijke time-outs instellen voor S3-verzoeken, wat op applicatieniveau niet mogelijk is voor bestandssysteem-/IO-operaties.Ter referentie: GitLab hanteert een vergelijkbaar standpunt door NFS/Amazon EFS niet te ondersteunen in zijn self-managed aanbod.
Nginx-specifieke configuratie voor grote deployments
Standaard beperken Overleaf Server-instanties het aantal verbindingen tot 768. Dit omvat persistente Websocket-verbindingen, HTML-navigatie op topniveau en ajax-verzoeken. Zodra de limiet is bereikt, kan de editor mogelijk geen verbinding maken, wordt de editorpagina mogelijk niet volledig geladen en kunnen compileerverzoeken mislukken. Nginx retourneert dan responses met status 500 en logtworker_connections are not enough while connecting to upstream in var/log/nginx/error.log binnen de sharelatex-container.
De instelling worker_connections beperkt het aantal gelijktijdige verbindingen dat nginx per worker accepteert. Het aantal workers wordt bepaald door de instelling worker_processes en staat in onze nginx-configuratie standaard op 4.
Nginx doet relatief weinig werk vergeleken met andere delen van het systeem, dus deze limieten fungeren als een veiligheidsmaatregel die voorkomt dat te veel verbindingen het systeem overbelasten. Het is beter om enkele overtollige verbindingen vroegtijdig te laten vallen dan elke verbinding te vertragen.
Overleaf Server-instanties bieden omgevingsvariabelen om deze nginx-instellingen aan te passen:
-
NGINX_WORKER_PROCESSESvoorworker_processes(standaard4) -
NGINX_WORKER_CONNECTIONSvoorworker_connections(standaard768) -
NGINX_KEEPALIVE_TIMEOUTvoorkeepalive_timeout(standaard65)Wanneer je een andere proxy vóór desharelatex-container draait (bijv. voor TLS-terminatie), moet deNGINX_KEEPALIVE_TIMEOUTin de Overleaf Server-instantie groter zijn dan die van de voorgaande proxy. Bijvoorbeeld met een ander nginx-proces op de Docker-host nginx-host zijn hier twee voorbeelden: -
Standaardwaarde
NGINX_KEEPALIVE_TIMEOUT: gebruikkeepalive_timeout 60s(standaardwaarde in upstream) in nginx-host -
Aangepaste waarde
NGINX_KEEPALIVE_TIMEOUT=100s: gebruikkeepalive_timeout 90s(aangepaste waarde in upstream) in nginx-host

