2010-03-08 1 views
1

많은 PDF가 각 PDF 파일의 BLOB 필드로 MySQL 내부에 저장됩니다. 평균 파일 크기는 각각 500K입니다.첨부 파일이 많은 "thin"서버상의 Ruby on Rails 배포

Rails 앱은 : 다운로드 링크를 클릭하는 파일 다운로드로 바이너리 데이터를 스트리밍합니다.

최대 5 명의 사용자가 5 개의 PDF를 동시에 다운로드한다고 가정 할 때 어떤 유형의 배포 설정 매개 변수를 알아야합니까? 예 :

얇은 시작 --servers 3 충분 여부 3

--servers (5 이상 필요) 위의 예를 들어 박막의 경우에 대한?

두 번째 질문은 가능한 '얇은'솔루션인가?

감사합니다.

답변

1

첫째로 나는 파일을 데이터베이스에 저장해야한다고 생각하지 않습니다. 더 나은 장소는 파일 시스템에 있거나 S3와 같은 클라우드 저장소에 있습니다. paperclip과 같은 첨부 파일 플러그인을 사용한다면 설치가 매우 쉽습니다.

그러나 데이터베이스에 파일을 저장한다고 가정합니다.

현재 설정의 문제점은 클라이언트가 파일을 전송할 때 클라이언트가 데이터를 다운로드하는 동안 씬 인스턴스가 차단된다는 것입니다. 즉, 3 개의 씬 인스턴스와 3 명이 pdf를 다운로드하면 사이트가 어떤 요청에도 응답하지 않습니다.

고맙게도 x-sendfile 헤더와 관련된이 문제에 대한 해결책이 있습니다. 이 작동 방식은 씬 인스턴스가 파일을 웹 서버 (예 : nginx)로 보내고,이 파일이 직접 파일을 제공합니다.

Here's a great post on stackoverflow on how to set this up with nginx.

사용하는 웹 서버

?

+0

이제 thin은 서버 자체입니다 (아직 배포되지 않음). thin start -e test -p 8000 -s 5 -d – ohho

0

다운로드 전용으로 하나 또는 두 개의 씬을 정의 할 수 있습니다. 귀하의 웹 서버에서 Rails 응용 프로그램과 다운로드 URL에 다른 프록시 배포를 만들 수 있습니다.