Maskinvarekrav
Når du klargjør maskinvare for å kjøre Overleaf, er den viktigste faktoren å ta hensyn til hvor mange samtidige brukere som vil kjøre kompileringer. Hvis du for eksempel har en lisens for totalt 100 brukere, men bare forventer at ~5 jobber samtidig, vil minimumsinstallasjonen være tilstrekkelig. Hvis du forventer at en større andel jobber (og kompilerer) samtidig, bør du vurdere å klargjøre en server med høyere spesifikasjoner.Minimumsinstallasjon
Et grunnleggende minimum på 2 kjerner og 3 GB minne kreves for grunnleggende drift med rundt 5 samtidige brukere. Dette minimumskravet vil også være tilstrekkelig for større grupper med mindre samtidig bruk, eller der det er greit at kompileringstidene blir lengre under tyngre belastning.Hvis du vurderer å bruke et filsystem basert på NFS (Network File System) for den lille instansen din, bør du se på denne delen i Feilsøking.
Skalering
Som en tommelfingerregel bør du, for å gi et høyt og stabilt tjenestenivå, legge til 1 CPU-kjerne og 1 GB minne i minimumsinstallasjonen for hver 5–10 samtidige brukere. Dette bør bare betraktes som en veiledning, siden faktorer som størrelsen på typiske dokumenter (større dokumenter bruker mer kompileringsressurser), hvor ofte brukerne kompilerer og hvor stor toleranse det er for lengre kompileringstider under tung belastning, alle påvirker hvor mye ressurser som kreves. Mange av kundene våre ønsker å ta i bruk Server Pro i hele organisasjonen eller på tvers av store team. I slike situasjoner er det vanskelig for oss å gi råd om spesifikke oppsettkrav, fordi bruksområdene og den tilgjengelige maskinvaren kan variere mye.
Kunder som overskrider grensene for én stor server, kan se på Horisontal skalering for Server Pro.
Lagring
Vi fraråder bruk av Network File System (NFS)/Amazon EFS/Amazon EBS til lagring av prosjekter/historikk i større oppsett, og vi støtter det uttrykkelig ikke for horisontal skalering. Disse filsystemene gir ikke den ytelsen og påliteligheten som Server Pro trenger når den kjører i stor skala. Når filsystemet ikke klarer å holde tritt med belastningen, stopper applikasjonen opp på grunn av for mange blokkerende IO-operasjoner. Slike stopp kan føre til at Redis-baserte låser går ut på tid, noe som igjen kan føre til korrupte prosjektdata. Vi anbefaler i stedet å bruke S3-kompatibel objektlagring. Treg S3-ytelse påvirker bare opplasting/nedlasting av filer, noe som bare fører til et økt antall åpne tilkoblinger til S3-leverandøren din og ikke påvirker oppførselen til resten av applikasjonen. I tillegg kan Server Pro angi rimelige tidsavbrudd for S3-forespørsler, noe som ikke er mulig for filsystem-/IO-operasjoner på applikasjonsnivå.Til sammenligning har GitLab en lignende holdning om ikke å støtte NFS/Amazon EFS i sitt selvadministrerte tilbud.
Nginx-spesifikk konfigurasjon for store distribusjoner
Som standard begrenser Overleaf Server-instanser antall tilkoblinger til 768. Dette omfatter vedvarende WebSocket-tilkoblinger, HTML-navigasjon på toppnivå og Ajax-forespørsler. Når grensen er nådd, kan det hende at editoren ikke klarer å koble til, at editorsiden ikke lastes helt inn og at kompileringsforespørsler mislykkes. Nginx vil returnere svar med status 500 og loggeworker_connections are not enough while connecting to upstream til var/log/nginx/error.log inne i sharelatex-containeren.
Innstillingen worker_connections begrenser antall samtidige tilkoblinger nginx godtar per worker. Antall workers styres av innstillingen worker_processes og er satt til 4 som standard i vår nginx-konfigurasjon.
Nginx gjør lite arbeid sammenlignet med andre deler av systemet, så disse grensene fungerer som en sikring som hindrer at for mange tilkoblinger overbelaster systemet. Det er bedre å avvise noen overskytende tilkoblinger tidlig enn å gjøre alle tilkoblinger tregere.
Overleaf Server-instanser eksponerer miljøvariabler for å justere disse nginx-innstillingene:
-
NGINX_WORKER_PROCESSESforworker_processes(standard4) -
NGINX_WORKER_CONNECTIONSforworker_connections(standard768) -
NGINX_KEEPALIVE_TIMEOUTforkeepalive_timeout(standard65)Når en annen proxy kjører foransharelatex-containeren (f.eks. for TLS-terminering), måNGINX_KEEPALIVE_TIMEOUTi Overleaf Server-instansen være større enn i den foregående proxyen. Med for eksempel en annen nginx-prosess på Docker-verten nginx-host er her to eksempler: -
Standardverdi for
NGINX_KEEPALIVE_TIMEOUT: brukkeepalive_timeout 60s(standardverdi i upstream) i nginx-host -
Egendefinert verdi
NGINX_KEEPALIVE_TIMEOUT=100s: brukkeepalive_timeout 90s(egendefinert verdi i upstream) i nginx-host

