2013-09-26 2 views
6

나는 Heroku에서 유니콘을 사용하고 있습니다. 내가 가지고있는 문제 중 하나는 파일 업로드입니다. 우리는 업로드에 carrierwave를 사용합니다. 기본적으로 약 2MB 크기의 파일이라도 50-60 % 업로드가 완료 될 때까지는 Unicorn이 시간 초과됩니다.파일 업로드 중 유니콘에서 시간 초과 오류가 발생했습니다.

우리는 로컬에서 테스트 할 때 유니콘을 사용하지 않고 로컬에서는 대용량 파일에 문제가 없습니다. (파일이 프로덕션 + 스테이징과 마찬가지로 carrierwave를 사용하여 AWS에 업로드 되더라도). 그러나 프로덕션 서버 &을 준비 할 때 시간 초과가 발생하는 것으로 나타났습니다.

이 문제를 해결하기위한 전략은 무엇입니까? 지연된 작업에이 파일 업로드를 넣을 수 있는지 확신 할 수 없습니다. 사용자에게 파일이 실제로 성공적으로 업로드되었음을 확인해야하기 때문입니다.

감사합니다. 링고

+0

유니콘을 로컬로 사용해 볼 수 있습니까? –

답변

0

타임 아웃과 같은 소리가 너무 낮게 설정되었습니다. 유니콘 설정은 어떻게 생겼습니까?

좋은 출발점은 https://devcenter.heroku.com/articles/rails-unicorn을 참조하십시오.

+1

내 유니콘 시간 초과는 15 점 이었지만 30 점으로 늘었지만 차이는 없었습니다. 타임 아웃의 증가에 의존하지 않는 솔루션을 설계하는 것을 선호합니다. –

2

큰 파일을 Heroku를 통해 S3에 업로드하는 경우 시간 초과를 피할 수 없습니다. 누군가 큰 파일을 업로드하기로 결정하면 시간이 초과 될 것입니다. Heroku에 업로드하고 S3로 전송하고 처리하는 데 30 초 이상 걸리면 요청이 시간 초과됩니다. 좋은 이유로도 30 초 요청은 단지 진절머리 나는 성능입니다.

이 블로그 게시물 (그리고 github의의의 repo)은 많은 도움이 될 것입니다 : http://pjambet.github.io/blog/direct-upload-to-s3/ 그것으로

, 당신은 작업 지시 하에-S3 파일 업로드를 얻을 수 있어야합니다. 업로드의 대부분을 위해 Heroku를 치는 것을 완전히 피하지 마십시오. jquery-fileupload의 콜백을 사용하면 파일이 성공적으로 업로드 된 후에 애플리케이션에 게시하고 delayed_job을 사용하여 백그라운드에서 처리 할 수 ​​있습니다. 사용자에게 업로드 성공 여부를 확인하면 처리해야하는 애플리케이션 문제입니다.

+0

참고 사항 : http://stackoverflow.com/a/16341162/1546887 – Taavo