502 Bad Gateway от Nginx для большого форка GitLab

Я запускаю GitLab 6.0.0 через Nginx и могу разветвлять небольшие репозитории, но когда я пытаюсь разветвить большой репозиторий (2 ГБ), я вижу страницу «502 Bad Gateway» примерно через один минута.

/var/log/nginx/gitlab_error.log показывает:

2013/08/29 12:21:33 [error] 25098#0: *221 upstream prematurely closed connection while reading response header from upstream, 
  client: 12.34.56.78, 
  server: myserver, 
  request: "POST /mygroup/myproject/fork HTTP/1.1", 
  upstream: "http://unix:/home/git/gitlab/tmp/sockets/gitlab.socket:/mygroup/myproject/fork", 
  host: "myserver", 
  referrer: "http://myserver/mygroup/myproject/fork"

person Nicholas Albion    schedule 29.08.2013    source источник


Ответы (2)


Ошибка 1527 предполагает проблему с памятью (и что требования к памяти, упомянутые в документе).

Это также может быть из-за начального тайм-аута:

Я обнаружил, что эта ошибка также возникает из-за того, что рабочим unicorn иногда требуется 33 секунды для запуска, и они настроены на тайм-аут через 30 секунд.

Вы можете изменить файл конфигурации единорога /home/git/gitlab/config/unicorn.rb :

timeout 300

В вашей конфигурации NGiNX вы также можете добавить:

proxy_connect_timeout 300;
proxy_read_timeout 300;

Если у вас есть файл /etc/nginx/fastcgi_params с вашим NGiNX, вы можете добавить:

fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 156 16k;
fastcgi_buffers 256 16k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
fastcgi_max_temp_file_size 0

fastcgi_pass            unix:/tmp/fpm.sock;

Обратите внимание, что после 502 и внесения упомянутых выше исправлений рекомендуется очистить кеш браузера, прежде чем снова пытаться получить доступ к gitlab.

person VonC    schedule 29.08.2013
comment
Да, у меня есть файл /etc/nginx/fastcgi_params, но каждая строка имеет формат: fastcgi_param PARAM_IN_CAPS $value. Должны ли перечисленные выше строки fastcgi находиться в файле unicorn.rb? - person Nicholas Albion; 30.08.2013
comment
@NicholasAlbion нет, этих строк не должно быть (насколько мне известно) в файле unicorn.rb. Самой важной для меня была директива timeout 300, дающая время веб-серверу дождаться начальной компиляции, происходящей во время самого первого запроса. - person VonC; 30.08.2013
comment
Я переключился с единорога на пуму, и теперь он работает лучше. gist.github.com/tkretschmer-rb/5248495 - person Nicholas Albion; 02.09.2013
comment
@NicholasAlbion интересно: тогда полная противоположность stackoverflow.com/a/18398991/6309? - person VonC; 02.09.2013
comment
Это было единственное решение, которое сработало в моем случае. Благодарю вас! - person solusipse; 14.02.2014
comment
@NicholasAlbion: Вау! Это действительно сработало! Спасибо, что опубликовали это! Я ломал голову несколько часов... :) - person Paul Calabro; 13.06.2014

Я сделал так же, как ваш гид. Но немного изменим конфигурацию fastcgi.

fastcgi_pass  unix:/home/git/gitlab/tmp/sockets/gitlab.socket;

Большое спасибо за ваше руководство!

ТВИНК78

person Bui Hong Quan    schedule 15.01.2014