GitHub에 많은 파일 세트를 푸시 할 때 RPC failed; curl 55 SSL_write () returned SYSCALL, errno = 32가 발생하고 오류 종료

1918 단어 SourceTreeGitHubGit

우선 정리


  • 원래 Git에서 관리하지 않은 기존 프로젝트의 리노베이션을 위해 Git 리포지토리를 로컬로 만들고 프로젝트 데이터를 모두 commit했다. 로컬로의 commit은 성공했지만, 막상 GitHub에 push하려고 하면 아래와 같은 에러가 발생해 실패해 버렸다.
  • error: RPC failed; curl 55 SSL_write() returned SYSCALL, errno = 32 
    fatal: The remote end hung up unexpectedly
    
  • 결론으로부터 말하면, 원인은 한 번에 다수 한편 대용량의 파일을 push 하려고 하면 데이터의 수취측에서 청크가 발생해, 이 때에 메모리가 부족해져 버리는 것이었다.
  • 해결책으로서는, 수동으로 몇번의 커밋으로 나누어 push 하면 무사히 push 할 수 있다.

  • 상황



    증상



    서두에서도 말했지만, SourceTree로부터 push하면 아래와 같은 메세지가 나와 에러 종료.
    error: RPC failed; curl 55 SSL_write() returned SYSCALL, errno = 32 
    fatal: The remote end hung up unexpectedly
    

    업하는 데이터가 전체로 5GB 정도 있기 때문에, 청크 처리가 행해질 때에 데이터의 수취측에서 메모리가 부족해지는 것이 원인이 아닐까 생각된다. 그럼 한 번에 청크 처리를 하는 데이터량을 줄여주지 않으면 위험하다고 하는 추정.

    Git 환경


  • SourceTree
  • GitLFS 설치 (단독으로 150MB 이상 용량이있는 파일을 GitHub에 push하는 소프트웨어)
  • SSH 통신
  • git config --global ssh.postBuffer 524288000으로 변경됨

    파일


  • Unity 프로젝트
  • 단독으로 150MB 이상의 파일이 없습니다
  • 몇 MB 정도의 psd 파일이 몇 개 존재
  • 프로젝트 전체에서 5GB 정도

  • 이 오류의 특징적인 메시지



    푸시하고 있는 동안에 상세를 표시하면 아래와 같은 표시가 나와 있다.

    마지막 행에서 청크가 발생했음을 알 수 있지만 푸시하는 데이터가 작 으면 표시되지 않는 특징적인 메시지입니다. 표시되면 메모리 용량적으로 상당히 어려운 처리를 하고 있는 것으로 추정할 수 있다. 다만, 이 메세지가 표시되면 push 실패한다고 말하는 것은 아니고, 메모리를 부수지 않으면 괜찮은 모습. (역으로 이번 에러가 발생하고 있을 때는 반드시 청크가 발생하고 있다.)

    해결책



    1. 커밋시 한 번에 스테이지하는 파일 수를 줄여 한 번의 커밋이 전체적으로 수 10MB 정도가 되도록 한다.
    2. 커밋마다 push한다(이것은 필요없을지도)
    ※SourceTree는 2MB 이상의 파일을 올리려고 하면 경고를 내고 오는데, 이것은 무시해 OK.

    끝에



    보통 Git에는 커밋 할 수 있었지만 push만 할 수 없기 때문에 초조했습니다 ...

    좋은 웹페이지 즐겨찾기