Gitea LFS 提交大文件超时的问题解决

2024年8月19日 877点热度 0人点赞 0条评论

Gitea LFS 提交大文件超时的问题解决

使用 Git 向自建的 Gitea 通过 LFS 上传大文件时,经常会出现因为文件大小超过 Nginx 配置 或者 Git 配置,或者 Git LFS 配置,导致文件无法成功上传的问题。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
⚠️:这里的上传 6.6 GB 后超时,实际文件时没有这么大的,目前显示这么大的原因都是因为超时重试导致的重复内容。
em@eMacBook-Pro Archive % git push
Uploading LFS objects: 97% (31/32), 6.6 GB | 4.8 MB/s, done.
LFS: Put "https://gitea.yiem.net/xxxxx/Archive.git/info/lfs/objects/c7dd8xxxxxxxxxxxxxxxxxxe40066b0e87bf7e722a70fc6f662cfe0684d4367a/635621763": read tcp 10.10.1.12:50760->192.168.1.1:443: i/o timeout
error: failed to push some refs to 'https://gitea.yiem.net/xxxxx/Archive.git'
⚠️:这里的上传 6.6 GB 后超时,实际文件时没有这么大的,目前显示这么大的原因都是因为超时重试导致的重复内容。 em@eMacBook-Pro Archive % git push Uploading LFS objects: 97% (31/32), 6.6 GB | 4.8 MB/s, done. LFS: Put "https://gitea.yiem.net/xxxxx/Archive.git/info/lfs/objects/c7dd8xxxxxxxxxxxxxxxxxxe40066b0e87bf7e722a70fc6f662cfe0684d4367a/635621763": read tcp 10.10.1.12:50760->192.168.1.1:443: i/o timeout error: failed to push some refs to 'https://gitea.yiem.net/xxxxx/Archive.git'
⚠️:这里的上传 6.6 GB  后超时,实际文件时没有这么大的,目前显示这么大的原因都是因为超时重试导致的重复内容。

em@eMacBook-Pro Archive % git push
Uploading LFS objects:  97% (31/32), 6.6 GB | 4.8 MB/s, done.
LFS: Put "https://gitea.yiem.net/xxxxx/Archive.git/info/lfs/objects/c7dd8xxxxxxxxxxxxxxxxxxe40066b0e87bf7e722a70fc6f662cfe0684d4367a/635621763": read tcp 10.10.1.12:50760->192.168.1.1:443: i/o timeout
error: failed to push some refs to 'https://gitea.yiem.net/xxxxx/Archive.git'

Gitea LSF 提交大文件超时的问题解决

 

解决方法 - Nginx 配置

nginx 示例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
http
{
# 示例
server_names_hash_bucket_size 512;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_body_buffer_size 50m;
client_max_body_size 50000m;
# 如果网站使用的反向代理,还需要配置反向代理参数
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 512 4k;
proxy_busy_buffers_size 64k;
proxy_cache_path /www/server/openresty/nginx/proxy_cache_temp levels=1:2 keys_zone=mw_cache:512m inactive=5m max_size=2g use_temp_path=off;
#proxy timeout
proxy_connect_timeout 500s;
proxy_read_timeout 2000s;
proxy_send_timeout 2000s;
}
http { # 示例 server_names_hash_bucket_size 512; client_header_buffer_size 32k; large_client_header_buffers 4 32k; client_body_buffer_size 50m; client_max_body_size 50000m; # 如果网站使用的反向代理,还需要配置反向代理参数 proxy_buffering on; proxy_buffer_size 4k; proxy_buffers 512 4k; proxy_busy_buffers_size 64k; proxy_cache_path /www/server/openresty/nginx/proxy_cache_temp levels=1:2 keys_zone=mw_cache:512m inactive=5m max_size=2g use_temp_path=off; #proxy timeout proxy_connect_timeout 500s; proxy_read_timeout 2000s; proxy_send_timeout 2000s; }
http
{
    # 示例
    server_names_hash_bucket_size 512;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;
    client_body_buffer_size 50m;
    client_max_body_size 50000m;

    # 如果网站使用的反向代理,还需要配置反向代理参数
    proxy_buffering on;
    proxy_buffer_size 4k;
    proxy_buffers 512 4k;
    proxy_busy_buffers_size 64k;
    proxy_cache_path /www/server/openresty/nginx/proxy_cache_temp levels=1:2 keys_zone=mw_cache:512m inactive=5m max_size=2g use_temp_path=off;
    #proxy timeout
    proxy_connect_timeout 500s;
    proxy_read_timeout 2000s;
    proxy_send_timeout 2000s;
}

 

Nginx 文件大小 核心参数:  client_max_body_size

Nginx 反向代理 核心参数:proxy_connect_timeout  proxy_read_timeout proxy_send_timeout

 

解决方法 - Gitea 配置

解决方法 - Gitea 配置

 

解决方法 - Git 与 Git LFS 配置

 

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
lfs.httptimeout=6200
lfs.dialtimeout=3600
lfs.tlstimeout=1200
lfs.concurrenttransfers=1
lfs.activitytimeout=3600
http.postbuffer=524288000
filter.lfs.process=git-lfs filter-process filter.lfs.required=true filter.lfs.clean=git-lfs clean -- %f filter.lfs.smudge=git-lfs smudge -- %f lfs.httptimeout=6200 lfs.dialtimeout=3600 lfs.tlstimeout=1200 lfs.concurrenttransfers=1 lfs.activitytimeout=3600 http.postbuffer=524288000
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
lfs.httptimeout=6200
lfs.dialtimeout=3600
lfs.tlstimeout=1200
lfs.concurrenttransfers=1
lfs.activitytimeout=3600
http.postbuffer=524288000

Git 与 Git LSF 配置

添加方式:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 类型下面命令 git config --global 为固定内容,lfs.activitytimeout 为你需要添加的参数, 3600 为参数的值,可以是数值、Bool(true)
git config --global lfs.activitytimeout 3600
# 查下添加结果,查询 Git 全局配置
git config --global -l
# 类型下面命令 git config --global 为固定内容,lfs.activitytimeout 为你需要添加的参数, 3600 为参数的值,可以是数值、Bool(true) git config --global lfs.activitytimeout 3600 # 查下添加结果,查询 Git 全局配置 git config --global -l
# 类型下面命令 git config --global 为固定内容,lfs.activitytimeout 为你需要添加的参数, 3600 为参数的值,可以是数值、Bool(true)

git config --global lfs.activitytimeout 3600


# 查下添加结果,查询 Git 全局配置

git config --global -l

 

 

 

⚠️:需要上述每个环节都要符合

最终上传成功结果

上传成功

 

 

帮助教程

提供最新的帮助教程,方便使用。

文章评论