Gitlab: Tiêu thụ bộ nhớ cực cao bởi quy trình ruby ​​của bó ruby


9

Tôi gặp sự cố với cài đặt Gitlab của mình chạy trên Ubuntu LTS 16.04 nhỏ. Tôi phải chỉ ra rằng tôi không có nhiều kinh nghiệm với Linux hoặc Gitlab.

Cài đặt Gitlab của tôi với một vài dự án cá nhân (chỉ 4) đã chạy Ok, mặc dù việc đẩy cực kỳ chậm và đôi khi không thành công. Ngoài ra truy cập vào giao diện web là cực kỳ chậm. Tôi đã kiểm tra máy chủ và nhận thấy rằng có tới 96% tổng bộ nhớ đã được sử dụng. Thủ phạm dường như là một quá trình bó.

top - 00:15:30 up 59 days, 16:17,  1 user,  load average: 0.00, 0.01, 0.09
Tasks: 160 total,   1 running, 159 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.5 us,  0.2 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 72.4/2048272  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||                           ]
KiB Swap:  0.0/0        [                                                                                                    ]

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 8760 git       20   0  648908 412768  14700 S   0.7 20.2   0:30.58 bundle
 8799 git       20   0  513748 302632  14300 S   0.0 14.8   0:20.02 bundle
 8833 git       20   0  513748 293028   4696 S   0.0 14.3   0:00.03 bundle
 8839 git       20   0  513748 292904   4572 S   0.0 14.3   0:00.02 bundle
 8836 git       20   0  513748 292840   4508 S   0.3 14.3   0:00.04 bundle
11792 mysql     20   0 1567168 158296      0 S   0.0  7.7   5:01.31 mysqld
32688 root      20   0 11.279g  99476   1164 S   0.0  4.9   1:21.06 dotnet
 8092 gitlab-+  20   0  576816  39616  39020 S   0.0  1.9   0:00.10 postgres
 8854 gitlab-+  20   0  595572  15004  10524 S   0.0  0.7   0:00.09 postgres
 8075 git       20   0  128348  14896   7680 S   0.0  0.7   0:00.07 gitlab-workhors
 8830 gitlab-+  20   0  592816  12196   9780 S   0.0  0.6   0:00.04 postgres
 9534 gitlab-+  20   0  592824  12060   9668 S   0.0  0.6   0:00.01 postgres
 8781 gitlab-+  20   0  592816  11932   9616 S   0.0  0.6   0:00.02 postgres
32684 root      20   0   61856  11420      0 S   0.0  0.6  23:35.39 supervisord
 8100 gitlab-+  20   0   37552  11112   2868 S   0.3  0.5   0:03.74 redis-server
 8094 gitlab-+  20   0  577068   7944   7324 S   0.0  0.4   0:00.01 postgres
 8087 gitlab-+  20   0   46756   7932   2900 S   0.0  0.4   0:00.01 nginx
 8095 gitlab-+  20   0  577068   7052   6444 S   0.0  0.3   0:00.06 postgres
 8088 gitlab-+  20   0   46412   6752   1992 S   0.0  0.3   0:00.10 nginx
  975 root      20   0   38236   6368   1908 S   0.0  0.3   8:47.56 systemd-journal
 8097 gitlab-+  20   0  578076   5600   4240 S   0.0  0.3   0:00.05 postgres
 8086 root      20   0   42240   5524   4696 S   0.0  0.3   0:00.00 nginx
  974 root      20   0   12204   4720     60 S   0.0  0.2   2:33.12 haveged
    1 root      20   0  185260   4308   2408 S   0.0  0.2   3:23.22 systemd
 7757 root      20   0   25224   4256   2484 S   0.0  0.2   0:00.28 bash
 9857 root      20   0   42468   3708   3076 R   0.0  0.2   0:00.09 top
 8098 gitlab-+  20   0   26956   3296   2608 S   0.0  0.2   0:00.08 postgres
 8089 gitlab-+  20   0   42424   3260   2224 S   0.0  0.2   0:00.01 nginx
 8784 git       20   0   18100   2980   2664 S   0.0  0.1   0:00.38 gitlab-unicorn-
 8096 gitlab-+  20   0  577068   2932   2332 S   0.0  0.1   0:00.03 postgres

Tôi đã nhấn pstree và các quy trình bó này dường như có liên quan đến ứng dụng ruby ​​(phải là gitlab).

systemd─┬─agetty
        ├─atd
        ├─bundle─┬─3*[bundle───{ruby-timer-thr}]
        │        └─{ruby-timer-thr}
... 

Có ai đã có kinh nghiệm tương tự hoặc một ý tưởng những gì có thể gây ra điều này?

Câu trả lời:


3

GitLab CE muốn sử dụng ít nhất 4GB RAM. Vì vậy, nếu bạn có RAM 2GB, GitLab cố gắng thêm 2GB bộ nhớ bằng cách sử dụng SWAP, kết quả là bộ nhớ trao đổi 2GB. Điều này làm cho GitLab rất chậm, ngay cả khi bạn là người dùng duy nhất.

Giải pháp: Máy của bạn phải có ít nhất 4 GB RAM trở lên. Đừng lãng phí thời gian của bạn vào việc điều chỉnh tệp cấu hình của GitLab, chỉ cần đảm bảo rằng bạn có 4 GB RAM cứng.

Đọc phần 'Bộ nhớ' trong tài liệu của GitLab này: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/requirements.md

Chúc may mắn!


2

Đó sẽ là những công nhân kỳ lân và sidekiq. Chúng dường như được sử dụng đúng số lượng bộ nhớ. 2GB là khoảng tối thiểu RAM để chạy gitlab; nếu hệ thống của bạn có nhiều hoạt động, bạn sẽ muốn 4GB trở lên.

Tôi cũng có một ví dụ gitlab cá nhân trên 2GB RAM và nó cũng cho thấy cách sử dụng tương tự:

top - 23:30:42 up 5 days,  7:53,  1 user,  load average: 0.04, 0.03, 0.05
Tasks: 172 total,   2 running, 170 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.2 us,  0.2 sy,  0.0 ni, 98.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2048816 total,    72636 free,  1762504 used,   213676 buff/cache
KiB Swap:  1048572 total,   801180 free,   247392 used.    73972 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND     
  664 git       20   0  715620 458296   2964 S   3.0 22.4 139:48.55 bundle      
 1623 git       20   0  543608 327472   3044 S   0.0 16.0   3:46.02 bundle      
 1626 git       20   0  543608 324384   3224 S   0.0 15.8   3:51.97 bundle      
 1620 git       20   0  543608 324244   3088 S   0.0 15.8   3:51.68 bundle      
 1556 git       20   0  510840 149736   2616 S   0.0  7.3   0:18.45 bundle    

Lưu ý rằng topkhông cho bạn thấy các quy trình đang thực sự làm gì, nhưng bạn có thể dễ dàng tìm ra ps. Ví dụ:

# ps 664
  PID TTY      STAT   TIME COMMAND
  664 ?        Ssl  139:49 sidekiq 4.2.1 gitlab-rails [0 of 25 busy]
# ps 1556
  PID TTY      STAT   TIME COMMAND
 1556 ?        Sl     0:18 unicorn master -D -E production -c /var/opt/gitlab/gitlab-rails/etc/unicorn.rb /opt/gitlab/embedded/service/gitlab-rails/config.ru

1
Cảm ơn bạn vì câu trả lời. Tôi nghĩ rằng tôi sẽ phải tìm kiếm một giải pháp nhẹ hơn. Gogs có vẻ đầy hứa hẹn
mode777 3/12

Tôi cũng có 2gb RAM và gitlab chạy tốt khi bắt đầu. Dường như có một rò rỉ bộ nhớ trên sidekick ( gitlab.com/gitlab-org/gitlab-ce/issues/30564 ). Có một số điều bạn có thể làm như: docs.gitlab.com/ce/ad dùng / operations / sắt (nhưng tôi đã không tự mình làm điều đó) hoặc khởi động lại quá trình sidekick đó mọi lúc (có thể là một cron?).
Josejulio

Kẻ giết người kỳ lân cũng có thể hữu ích về.gitlab.com/2015/06/05/ Cách
Josejulio

Tôi đang đánh giá gitlab cho một dự án và đã gặp phải một vấn đề tương tự, ở đây vào tháng 3 năm 2018. Một bản cài đặt Debian mới sáng bóng trên nút 2gb, Gitlab chạy tốt, nhưng trong vài ngày, các bundlequá trình tiêu tốn bộ nhớ và gây ra sự hoán đổi quá mức. Điều này đã được sửa chữa, ít nhất là tạm thời, với gitlab-ctl restart. "Gitlab bị rò rỉ bộ nhớ", tài liệu nói. Vâng, nó đã bị rò rỉ từ thời điểm bạn cài đặt nó, khi nó đang chạy không tải.
Roger Halliburton

Bạn có thể nhấn cở trên để hiển thị các dòng lệnh thực tế.
Thomas

1

Tôi biết chủ đề này là một lil stale nhưng có ai khác vẫn gặp phải điều này? Tôi đang ở trong một hộp vật lý với 24GB và 12 lõi / 24 giây và tôi thấy gói bị khóa như điên cho đến khi nó chiếm hết bộ nhớ. Tôi đã xem cấu hình gitlab và thấy đồng thời sidekiq được đặt thành 25 theo mặc định - có vẻ như điều đó có nghĩa là có tới 25 bản sao của gói đang chạy? Nó tạo ra càng nhiều càng tốt trước khi hết bộ nhớ. Khùng.


Cập nhật Tôi tìm thấy chủ đề này giúp: stackoverflow.com/questions/36122421/iêu
BoeroBoy

0

Bạn đã thử tắt nó đi và sau đó bật lại?

gitlab-ctl restart

Bất cứ điều gì đang xảy ra bundle, có vẻ như khá rõ ràng rằng các công cụ * -killer không nắm bắt được những vấn đề này. Có vẻ như các quá trình này được bắt đầu từ sidekiq.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.