Wie ich den GitLab-Speicherverbrauch in meinem Docker-basierten Setup reduziert habe
Ich betreibe derzeit 4 separate dockerisierte gitlab-Instanzen auf meinem Server. Diese verbrauchen ziemlich viel Speicher, auch wenn sie eine Zeit lang nicht verwendet werden.
Anzahl der Unicorn-Worker-Prozesse reduzieren
Der gitlab-Standard ist die Verwendung von 6 Unicorn-Worker-Prozessen. Durch die Reduzierung der Worker auf 2 sank mein GitLab-Speicherverbrauch um ungefähr 60%:
unicorn['worker_processes'] = 2In meinem dockerisierten Setup habe ich einfach die GITLAB_OMNIBUS_CONFIG in docker-compose.yml aktualisiert und die Instanz neu gestartet. Wenn Sie gitlab nicht mit Docker installiert haben, müssen Sie möglicherweise sudo gitlab-ctl reconfigure ausführen.
Beachten Sie, dass Sie mindestens 2 Unicorn-Worker benötigen, damit gitlab ordnungsgemäß funktioniert. Siehe dieses Issue für Details.
Beachten Sie auch, dass die Reduzierung der Worker auf das Minimum wahrscheinlich die gitlab-Leistung negativ beeinflusst. Erhöhen Sie die Anzahl der Worker, wenn Sie Leistungseinbußen bemerken.
Prometheus-Monitoring deaktivieren
Die meisten kleinen Installationen benötigen kein Prometheus, das in GitLab integrierte Überwachungstool:
prometheus_monitoring['enable'] = falseSidekiq-Parallelität reduzieren
sidekiq ist der in GitLab integrierte Hintergrund-Job-Prozessor. Die Standard-Parallelität ist 25. Ich empfehle, sie zu reduzieren.
sidekiq['concurrency'] = 2Dies kann dazu führen, dass Hintergrund-Jobs länger dauern, da sie in der Warteschlange warten müssen, aber für kleine Installationen ist das meiner Erfahrung nach nicht relevant.
Den PostgreSQL-Shared-Memory reduzieren
Dies wurde auf StackOverflow empfohlen.
postgresql['shared_buffers'] = "256MB"Wenn Sie diesen Wert zu niedrig einstellen, kann dies zu einer höheren IO-Last führen und alle Operationen (einschließlich Website-Seitenladevorgänge) können langsamer sein.
Die vollständige Konfiguration
Dies ist die Konfiguration (kombiniert aus allen oben aufgeführten Strategien), um den Speicherverbrauch zu senken:
# Unicorn-Konfiguration
unicorn['worker_processes'] = 2
# PostgreSQL-Konfiguration
postgresql['shared_buffers'] = "256MB"
# Sidekiq-Konfiguration
sidekiq['concurrency'] = 2
# Prometheus-Konfiguration
prometheus_monitoring['enable'] = false