2012-10-27 3 views
8

나는 레일즈의 기본 WEBrick 서버에 대한 다른 옵션들을 평가하고 있으며, Thin은 매우 잘 작동하는 가장 고통스럽고 깨끗한 제품이다 !!이것들 중 어느 것이 "최신 레일"어플리케이션과 함께 사용하는 더 좋은 옵션입니까? Mongrel, Thin, WEBrick and Passenger

이들 잡종 중 하나 인 Thin, WEBrick 및 Passenger를 권하고 싶습니다. 왜 ..? 이러한 서버 중 하나와 함께 제공되는 확장 성 특권 (클러스터 친화적이거나 구성 가능한 종류의 저울을 처리 할 수있는 구성)은 있습니까? 아니면 확장 성을 평가하는 동안 매개 변수가되어야합니까?

답변

9

개발 및 생산을위한 '얇은'보석처럼 간단합니다. (나는 Phusion Passenger 저자 중 하나입니다.)

  • WEBrick은 장난감 웹 서버입니다. 저조한 성능을 발휘하고 메모리가 누출된다고하기 때문에 개발 이외에는 아무도 사용하지 않습니다.
  • 당신은 씬이 잘 작동한다고하셨습니다. 이미 역방향 프록시 구성으로 설정 했습니까? 이것이 생산 시나리오에서 사람들이하는 일이기 때문입니다. Thin (또는 잡종, 또는 Unicorn)을 인터넷에 직접 노출하는 것은 안전하지 않습니다.
  • 좀 더 자세한 설명을 원하시면 Ruby on Rails server optionsthe Phusion Passenger architectural overview을 읽어보십시오.

확장성에 관해서는 별 차이가 없습니다. 그것들은 모두 프로덕션 환경에서 거의 비슷하게 작동합니다. 모두 똑같은 방식으로 확장됩니다. 발생할 수있는 문제는 응용 프로그램이나 Rails가 원인 일 가능성이 큽니다. WEBrick을 제외하고는 프로덕션에서 사용하지 않아야합니다. 당신은 안녕하세요 세계 벤치 마크에서 차이점을 볼 수 있지만 그것은 모두가됩니다. 프로덕션 환경에서는 대부분의 시간이 앱에 소요되므로 Hello World 벤치 마크에서 볼 수있는 사소한 속도 차이는 완전히 눈에 보이지 않게됩니다.

알아 두어야 할 사항이 있습니다.

  • Phusion Passenger는 글로벌 대기열 기능을 제공합니다. 특정 문제를 해결합니다 (explained in detail in the manual). Nginx와 Apache는 기본적으로 라운드 로빈 방식으로 요청을 처리하므로 Phusion Passenger는이 문제를 겪습니다. Phusion Passenger를 사용하지 않을 때이 문제를 해결할 수있는 방법이 있지만 특정 구성이나 추가 웹 서버 모듈을 설치해야합니다.
  • I/O 모델은 응용 프로그램의 특성에 따라 중요하거나 중요하지 않을 수 있습니다. Mongrel, Thin, Unicorn은 모두 다중 프로세스 단일 스레드입니다. 이 기능은 로컬 데이터베이스에서 물건을 찾아 렌더링하는 전통적인 웹 앱에 효과적이지만, 많은 HTTP API 호출을 수행하거나 I/O를 많이 기다려야하는 앱의 경우에는 큰 문제가됩니다. Why Rails 4 Live Streaming is a Big Deal에서 자세히 설명합니다.

    Phusion Passenger도 다중 프로세스 단일 스레드이지만, Phusion Passenger Enterprise은 다중 스레드를 지원합니다. Phusion Passenger Enterprise는 대규모 생산 환경에 유용한 다양한 기능을 갖춘 오픈 소스 Phusion Passenger의 상용 버전입니다.

  • 대규모 프로덕션 환경에서 일부 기능이 중요 해집니다. Mongrel, Thin, Unicorn, Phusion Passenger 등이 모두 이러한 기능을 어느 정도 노출하지만 일부는 다른 기능보다 많은 관리 노력이 필요합니다. 예를 들어 Mongrel과 Thin에서 롤링 재시작을 구현하려면 배포 스크립트에 많은 단계가 필요합니다. 유니콘은 많은 단계를 필요로하지 않지만 여전히 중요합니다. 이것은 Phusion Passenger Enterprise가 빛을 발하는 곳입니다. 모든 기능을 하나의 설정 옵션으로 전환합니다. 옵션을 켜면 소프트웨어가 나머지를 처리합니다.

따라서 시나리오에 가장 적합한 옵션을 선택하십시오.

+0

은 꽤 많은 시간 동안 떨어져있었습니다 ... 훌륭한 답변을 주셔서 감사합니다. 지금 승객 + nginx를 사용하기 시작했습니다. 요구 사항은 그렇게 특별하지 않기 때문에 확장 성은 그다지 문제가되지 않습니다 !! 다시 한 번 감사드립니다 !! – brucewayne

+0

@Hongli 필자는 Faye 루비 보석을 광범위하게 사용하는 Rails 응용 프로그램을 가지고 있는데, 이는 차례로 웹 소켓과 혜성 (long HTTP 폴링)을 광범위하게 사용합니다. 즉, 오랜 시간 동안 열린 상태로 유지되는 수백 개의 TCP 연결이 있습니다. 사이트의 여러 부분에서 실시간 데이터를 사용합니다. 처음에는 Apache2를 사용했지만 비동기 I/O 멀티 스레드 강도 때문에 nginx로 마이그레이션하기로 결정했습니다. 여객은 애플리케이션 서버로서 Thin보다 더 좋은 게임을 할 수 있습니까? – Donato

+0

@Donato WebSocket을 사용하는 경우 Nginx를 사용하는 Passenger Enterprise (멀티 스레딩 용)는 Thin처럼 잘 작동합니다. Passenger Enterprise의 Thin에 대한 주된 장점은 더 나은 툴링과 더 나은 문서화입니다. 또한 [WebSocket 튜닝 지침] (https://www.phusionpassenger.com/library/config/nginx/tuning_sse_and_websockets.html)을 확인하십시오. – Hongli

1

프로덕션을 설정하기 가장 쉬운 방법은 Apache이고 mod_rails (승객)입니다. 새로운 열탕을 사용하고 싶다면 nginx과 승객에게 소용돌이 칠 수 있습니다.

개발을 위해 일반적으로 mongrel이 가장 편리합니다. 대부분의 Windows IDE (RadRails, Netbeans)는 개발 작업에 Webrick 또는 Mongrel을 사용할 수있는 선택권을 부여하며 IDE 자체에서 서버를 제어 할 수있게합니다.

업데이트

네 선택

네 가지 선택, 잘 플러스에 WEBrick 진짜하지만 프로덕션 서버에 대한 특별한 선택이 될 것입니다. 약 ... 복잡성 증가의 순서로

의 nginx + 잡종 의 nginx + 승객 아파치 + 잡종 아파치 + 여객 (가 Phusion 여객 독립이다,하지만 정말 함께 컴파일 된의 nginx + 승객, 그래서 난 어떤 사람들에게는 좋은 옵션 일지 모르지만 계산되지는 않습니다.)

큰 사이트는 서버 앞에 특수 레이어 7 하드웨어 (NetScaler, F5, ...)를 추가 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 이것은 비 개발 목적을위한 것입니다 .. 내가 nginx에게 한 번 시도해 줄 것이라고 생각 .. 두 번째 질문에 대한 통찰력 ..? – brucewayne

+0

난 복잡한 순서로 정렬에 동의하지 않습니다. Phusion Passenger + Apache와 Phusion Passenger + Nginx는 사용성 측면에서 거의 동일합니다. 하지만 둘 다 Apache/Nginx + Mongrel보다 사용하기 쉽다. Phusion Passenger Standalone은 단일 명령어이기 때문에 Nginx를 직접 컴파일 할 필요가 없으므로 가장 쉬운 방법입니다. 그 결과는 즉시 인터넷에 노출 될 수 있습니다. 또한, Phusion Passenger + Nginx는 "새로운 인기"가 아닙니다. 2009 년 이래로 계속되었습니다. – Hongli

0

씬은 Dipak 이미 귀하의 질문의 절반을 대답하지만 나를 것들에 조금 명확하게