【问题标题】:timeout on HTTPS requests to gitlab 6.5对 gitlab 6.5 的 HTTPS 请求超时
【发布时间】:2014-02-11 08:54:39
【问题描述】:

我在这里有一个非常酷的 gitlab 设置:

  • apache 2.2.22-1ubuntu1.4
  • gitlab 6.5(使用 mod_proxy 集成到 apache)
  • 独角兽 v4.3.1(rails 网络服务器)
  • 2MBit 上/下互联网连接

但是,在执行 'git clone' 或 'git pull' 时,对于大小 > 10 Mib 的存储库,它会失败。

ubuntu~/Projects/git/myRepo(master|✔) % git pull 
Username for 'https://example.org': my.username@mydomain.de 
Password for 'https://my.username@mydomain.de@example.org': 
remote: Counting objects: 7798, done. 
remote: Compressing objects: 100% (4132/4132), done. 
fatal: The remote end hung up unexpectedlyiB | 222 KiB/s     
fatal: early EOF
fatal: index-pack failed 

它似乎能够复制大约 8Mib 的数据并最多运行大约 30 秒。问题每次都是可重现的,并且一遍又一遍地显示出相同的故障迹象。

我已阅读: http://jinsucraft.wordpress.com/2013/01/08/when-github-git-clone-fails-with-early-eof-and-index-pack-failed/ 并尝试过:

git config --global http.postBuffer 524288000

在客户端上无济于事。

有人知道是什么原因造成的吗?

【问题讨论】:

  • 您如何解决 Skyr 的回答问题?我也遇到这个问题。我使用的是 Nginx 而不是 Apache。我增加了所有的超时设置,但这个问题仍然存在。我也在这里问过(stackoverflow.com/questions/23200149/…)。

标签: timeout unicorn gitlab


【解决方案1】:

此问题的原因可能是超时问题(或类似限制,例如数据量):发生服务器端超时,这会关闭 http 连接,从而导致客户端“早期 EOF”错误消息。此类超时可以在多个位置进行配置(我在此处列出它们是因为其他 Web 服务器可能具有类似的设置,因此它们可能会提示您在哪里查看):

  • Apache 的Timeout 确定连接断开之前的绝对静默时间(即没有数据传输)。由于数据是连续接收的,这不是问题所在。
  • Apache mod_proxy 的ProxyTimeout 是上述超时的特殊设置。同样,由于它不是总请求时间的限制,所以这里不是问题。
  • Apache 可以使用LimitRequestBody 限制POST 请求的大小;默认为无限制,但这可能因您的发行版配置而异
  • gitlab 的Unicorn configuration example 建议超时30 秒。这是一个绝对超时,例如每一个超过 30 秒的请求都将被终止。

在 Unicorn 配置中增加超时应该可以解决您的问题。请记住,并行请求的数量也受到 Unicorn 的限制。克隆大型 repo 会阻止一个请求,但几乎不会导致 CPU 负载。如果您的 gitlab 服务器没有高流量配置文件,您应该考虑增加 worker_process 数字。

附带说明:gitlab.yml 配置还提供了git timeout;这个超时限制了 git 操作,比如计算几个提交的差异。克隆/拉取时对超时没有影响。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 2019-11-15
    • 1970-01-01
    • 2021-11-17
    相关资源
    最近更新 更多