Gitea LFS 提交大文件超时的问题解决
使用 Git 向自建的 Gitea 通过 LFS 上传大文件时,经常会出现因为文件大小超过 Nginx 配置 或者 Git 配置,或者 Git LFS 配置,导致文件无法成功上传的问题。
⚠️:这里的上传 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'
解决方法 - Nginx 配置
nginx 示例:
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
解决方法 - Git 与 Git LFS 配置
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 config --global 为固定内容,lfs.activitytimeout 为你需要添加的参数, 3600 为参数的值,可以是数值、Bool(true) git config --global lfs.activitytimeout 3600 # 查下添加结果,查询 Git 全局配置 git config --global -l
⚠️:需要上述每个环节都要符合
文章评论