我使用了 Gitlab CE 的安装程序,到目前为止一切正常。然后,当完成安装时,我的网站上总是出现 502 错误,从那时起,我做了一些研究,然后我发现我的 gitlab 服务 unicorn 每 10 秒重新启动/崩溃一次,所以我假设这就是我得到 502 的原因,但我不知道为什么它总是崩溃。我该如何防止这种情况?我使用的是 Debian 7.6 和最新的 gitlab 版本
run: nginx: (pid 4919) 953s; run: log: (pid 2236) 1642s
run: postgresql: (pid 2239) 1642s; run: log: (pid 2238) 1642s
run: redis: (pid 2233) 1642s; run: log: (pid 2232) 1642s
run: sidekiq: (pid 3323) 1332s; run: log: (pid 2230) 1642s
run: unicorn: (pid 8153) 2s; run: log: (pid 2234) 1642s
答案1
我在 stderr 中发现以下内容
I, [2014-08-19T22:10:48.807830 #3843] INFO -- : Refreshing Gem list
I, [2014-08-19T22:10:53.127464 #3843] INFO -- : listening on addr=127.0.0.1:8080 fd=11
I, [2014-08-19T22:10:53.127774 #3843] INFO -- : unlinking existing socket=/var/opt/gitlab/gitlab-rails/tmp/sockets/gitlab.socket
I, [2014-08-19T22:10:53.127900 #3843] INFO -- : listening on addr=/var/opt/gitlab/gitlab-rails/tmp/sockets/gitlab.socket fd=12
E, [2014-08-19T22:10:53.195390 #3843] ERROR -- : Cannot allocate memory - fork(2) (Errno::ENOMEM)
所以我认为我的内存太低了...我有 512 MB
在 gitlabHq 中发现
512MB 是绝对最小值,但我们不建议使用这个内存量。您需要配置 512MB 或 1.5GB 的交换空间。使用 512MB 的交换空间,您必须仅配置一个 unicorn 工作进程。使用一个 unicorn 工作进程,只有通过 ssh 访问 git 才能工作,因为通过 http 访问 git 需要两个正在运行的工作进程(一个工作进程用于接收用户请求,一个工作进程用于授权检查)。如果您使用 SSD 存储并配置 1.5GB 的交换空间,则可以使用两个 Unicorn 工作进程,这将允许 http 访问,但速度仍然很慢。1GB 最多支持 100 个用户(我们强烈建议添加至少 1GB 的交换空间,如果您的单个存储库小于 250MB,则必须添加 1GB 的交换空间)