程式碼庫最近換了,使用了 GitLab。這兩天觀察了下伺服器的使用情況,發現 GitLab 很吃記憶體。直接佔用了 30 多個G的記憶體。
一、發現問題
使用 top 命令檢視記憶體時,發現前幾十個都是同一個應用程式。再透過 ll /proc/pid 命令查詢具體程式位置,發現都是 GItLab 。
這其中包含了 gitlab、postgresql、nginx 等各種 gitlab 所需的服務。具體如下圖:
二、查詢原因
經過查證。GitLab 在預設情況下,其配置是很吃配置的,如工作的核數,是當前機器 CPU 核數 +1。再加上資料庫快取、Sidekiq 等都需要設定。
具體可以參考:
三、解決
問題已經找到,那就直接修改問題即可。
主要就是修改 gitlab.rd 配置檔案即可。(下面的配置可以滿足幾十人的工作需求)
1、修改 Puma(在 13.0版本後是這個,以前是unicorn)
主要是設定工作程式個數和最大、最小執行緒個數。
2、修改 Sidekiq
設定 Sidekiq 併發個數,建議是設定成相同的數值。
3、修改 postgresql
設定快取大小、工作程式個數。