Wie ich den GitLab-Speicherverbrauch in meinem Docker-basierten Setup reduziert habe

English Deutsch

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%:

gitlab_memory_config.rb
unicorn['worker_processes'] = 2

In 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:

disable_prometheus.rb
prometheus_monitoring['enable'] = false

Sidekiq-Parallelität reduzieren

sidekiq ist der in GitLab integrierte Hintergrund-Job-Prozessor. Die Standard-Parallelität ist 25. Ich empfehle, sie zu reduzieren.

reduce_sidekiq_concurrency.rb
sidekiq['concurrency'] = 2

Dies 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.

reduce_postgresql_shared_buffers.rb
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:

gitlab_complete_memory_config.rb
# Unicorn-Konfiguration
unicorn['worker_processes'] = 2
# PostgreSQL-Konfiguration
postgresql['shared_buffers'] = "256MB"
# Sidekiq-Konfiguration
sidekiq['concurrency'] = 2
# Prometheus-Konfiguration
prometheus_monitoring['enable'] = false

Check out similar posts by category: Docker, Git