[gogs]PUSH大文件出现错误,提示500错误

2023-12-15 19 views
9

我客户端使用TortoiseGit,整个提交包含两个大文件,一个13.4MB,一个4.8MB. (不知道是不是大文件造成的). PUSH后,出现了错误,网页打开指定版本库出现500错误. 不过稍过段时间后,可以打开。查看提交历史没有对应的记录。

Gogs版本: 0.6.16.1023 Beta.

下面是TortoiseGit日志. gogs服务端gogs/log/gogs.log目录下的没找到此次错误的日志...

git.exe push --progress "origin" master:master

Counting objects: 13, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (12/12), done.
Writing objects: 100% (13/13), 18.28 MiB | 234.00 KiB/s, done.
Total 13 (delta 4), reused 0 (delta 0)
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
error: RPC failed; result=22, HTTP code = 500
Everything up-to-date

回答

4

最新版都0.8.10了,要不我改天升级到最新版,再PUSH试试.

0

升级到最新版(0.8.10.1217)还是同样的错误. 不过多了一条error. Gogs的gogs.log日志中没有错误记录...

git.exe push --progress "origin" master:master

Counting objects: 13, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (12/12), done.
error: unable to rewind rpc post data - try increasing http.postBuffer
Writing objects: 100% (13/13), 18.28 MiB | 257.00 KiB/s, done.
Total 13 (delta 4), reused 0 (delta 0)
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
error: RPC failed; result=56, HTTP code = 0
Everything up-to-date
0

晕,容器创建时加了一个时区设置-v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro,成功了... 本想加时区是看日志的.. (原先使用默认的容器设置,时区是零时区+0,提交代码也没出过问题啊...) 不知道能不能帮你定位到问题,不行就关闭了吧.

3

没有使用Nginx。 我重现一下这个错误,把步骤和文件发你。

0

发现问题原因了,上传大文件上传时间过长,当超过大约110秒的时候,就会出现上面的错误,并会导致gogs暂时性的找不到对应的版本库. 最新版本0.8.15.1231,以及旧版本都有这个问题.

5

总共80MB的文件,从2016/01/01 18:41:35开始PUSH. 耗时76秒,上传35.09 MiB时, 出现错误. http.log日志就一条:

2016/01/01 18:42:51 [...routers/repo/http.go:373 serviceRpc()] [E] fail to serve RPC(receive-pack): fork/exec /usr/bin/git: cannot allocate memory

上面110秒的文件大约50MB,最初出现错误的文件大约18MB。文件数都在4个以上.

4

SSH不怎么用,:)
我这个情况的确比较特殊,一次性PUSH近20MB的内容。 不过在本机搭建的环境中测试,PUSH近100MB的内容也不会出错。 所以我觉得主要原因还是在耗时较长的情况下出现这个错误。 感谢,一直关注回复。

9

@Unknwon
今天在Win2008上部署v0.9.0,PUSH后提示#2309类似的错误,问题原因应该是内存不足。 我看了下gogs进程,它使用4倍于提交文件大小的内存(应该不止4倍.)。 这次造成问题的原因比较明确了,想问问:接受PUSH数据的这块逻辑是否有改进的空间?

cmd result

Counting objects: 23436, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (22678/22678), done.
Writing objects: 100% (23436/23436), 266.34 MiB | 4.88 MiB/s, done.
Total 23436 (delta 4579), reused 0 (delta 0)
error: RPC failed; result=22, HTTP code = 500
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Everything up-to-date

http.log

2016/03/18 09:50:33 [...routers/repo/http.go:380 serviceRpc()] [E] fail to serve RPC(receive-pack): exit status 128

qq 20160318095153

0

暂时没有改进空间。。。先改用 SSH 吧 0.0