Donanım gereksinimleri
Overleaf’i çalıştırmak için donanım hazırlarken dikkate alınması gereken ana etken, aynı anda kaç kullanıcının derleme yapacağıdır. Örneğin toplam 100 kullanıcılık bir lisansınız varsa ancak aynı anda yalnızca ~5 kullanıcının çalışmasını bekliyorsanız, minimum kurulum yeterli olacaktır. Daha yüksek oranda kullanıcının eşzamanlı çalışmasını (ve derleme yapmasını) bekliyorsanız, daha yüksek özelliklere sahip bir sunucu hazırlamayı düşünmelisiniz.Minimum kurulum
Yaklaşık 5 eşzamanlı kullanıcıyla temel işlemler için en az 2 çekirdek ve 3GB bellek gerekir. Bu minimum gereksinim, eşzamanlı kullanımın daha az olduğu veya yoğun kullanım sırasında derleme sürelerinin uzamasının kabul edilebilir olduğu daha büyük gruplar için de yeterli olacaktır.Küçük örneğiniz için NFS (Network File System) tabanlı bir dosya sistemi kullanmayı düşünüyorsanız, lütfen Sorun Giderme bölümündeki ilgili kısma göz atın.
Ölçeklendirme
Genel bir kural olarak, yüksek ve tutarlı bir hizmet düzeyi sağlamak için her 5-10 eşzamanlı kullanıcı başına minimum kuruluma 1 CPU çekirdeği ve 1GB bellek eklenmelidir. Bu yalnızca bir kılavuz olarak ele alınmalıdır; çünkü tipik belgelerin boyutu (büyük belgeler daha fazla derleme kaynağı tüketir), kullanıcıların ne sıklıkla derleme yaptığı ve yoğun kullanım sırasında uzun derleme sürelerine ne kadar tolerans gösterildiği gibi etkenlerin tümü gereken kaynak düzeyini etkiler. Müşterilerimizin çoğu Server Pro’yu kuruluş genelinde veya büyük ekipler arasında dağıtmak ister. Bu tür durumlarda, kullanım senaryoları ve mevcut donanım oldukça çeşitli olabileceğinden, belirli kurulum gereksinimleri konusunda tavsiyede bulunmamız zordur.
Tek bir büyük sunucunun sınırlarını aşan müşteriler, Server Pro için Yatay ölçeklendirme sayfasına göz atabilir.
Depolama
Daha büyük kurulumlarda proje/geçmiş depolaması için Network File System (NFS)/Amazon EFS/Amazon EBS kullanılmamasını öneririz ve yatay ölçeklendirme için bunu açıkça desteklemiyoruz. Bu dosya sistemlerinin davranışı, Server Pro’nun yüksek ölçekte çalışırken ihtiyaç duyduğu performansı ve güvenilirliği sağlamaz. Dosya sistemi yüke yetişemediğinde, uygulama çok sayıda engelleyici IO işlemi nedeniyle takılır. Bu takılmalar Redis tabanlı kilitlerin süresinin aşılmasına yol açabilir ve bu da proje verilerinin bozulmasına neden olabilir. Bunun yerine S3 uyumlu nesne depolama kullanmanızı öneririz. Yavaş S3 performansı yalnızca dosyaların yüklenmesini/indirilmesini etkiler; bu da yalnızca S3 sağlayıcınıza açık bağlantı sayısının artmasına yol açar ve uygulamanın geri kalanının davranışını etkilemez. Ayrıca Server Pro, S3 istekleri için makul zaman aşımları belirleyebilir; bu, uygulama düzeyinde dosya sistemi/IO işlemleri için mümkün değildir.Referans olarak, GitLab da kendi kendine yönetilen sürümünde NFS/Amazon EFS’yi desteklememe yönünde benzer bir tutum izlemektedir.
Büyük dağıtımlar için Nginx’e özgü yapılandırma
Varsayılan olarak Overleaf Server örneği bağlantı sayısını 768 ile sınırlar. Buna kalıcı Websocket bağlantıları, üst düzey HTML gezinmeleri ve ajax istekleri dahildir. Sınıra ulaşıldığında editör bağlanamayabilir, editör sayfası tamamen yüklenmeyebilir ve derleme istekleri başarısız olabilir. Nginx 500 durum kodlu yanıtlar döndürür vesharelatex konteyneri içindeki var/log/nginx/error.log dosyasına worker_connections are not enough while connecting to upstream kaydını yazar.
worker_connections ayarı, nginx’in worker başına kabul edeceği eşzamanlı bağlantı sayısını sınırlar. Worker sayısı worker_processes ayarıyla kontrol edilir ve nginx yapılandırmamızda varsayılan olarak 4’e ayarlanmıştır.
Nginx, sistemin diğer bölümlerine kıyasla çok fazla iş yapmaz; bu nedenle bu sınırlar, çok fazla bağlantının sistemi bunaltmasını önleyen bir güvenlik önlemi işlevi görür. Her bağlantıyı yavaşlatmak yerine fazla bağlantıların bir kısmını erkenden reddetmek tercih edilir.
Overleaf Server örnekleri, bu nginx ayarlarını düzenlemek için ortam değişkenleri sunar:
-
worker_processesiçinNGINX_WORKER_PROCESSES(varsayılan4) -
worker_connectionsiçinNGINX_WORKER_CONNECTIONS(varsayılan768) -
keepalive_timeoutiçinNGINX_KEEPALIVE_TIMEOUT(varsayılan65)sharelatexkonteynerinin önünde başka bir proxy çalıştırırken (ör. TLS sonlandırma için), Overleaf Server örneğindekiNGINX_KEEPALIVE_TIMEOUTdeğeri önceki proxy’ninkinden büyük olmalıdır. Örneğin Docker ana makinesinde nginx-host adlı başka bir nginx süreci varsa, iki örnek şöyledir: -
Varsayılan
NGINX_KEEPALIVE_TIMEOUTdeğeriyle, nginx-host içindekeepalive_timeout 60s(upstream’deki varsayılan değer) kullanın -
Özel
NGINX_KEEPALIVE_TIMEOUT=100sdeğeriyle, nginx-host içindekeepalive_timeout 90s(upstream’deki özel değer) kullanın

