2013-07-06 3 views
3

Windows XP, strawberry perl 5.14.2 및 Mojolicious 버전 3.84에서 Mojolicious 앱을 개발했습니다. 고성능을 위해 나는이 응용 프로그램의 여러 인스턴스를 만들고 같은 컴퓨터지만 다른 포트에서 듣고 싶습니다.mojolicious 앱을 여러 개 배포

use Plack::Builder; 
use Plack::App::Proxy; 

builder { 
    enable "Proxy::LoadBalancer", backends => ['http://l27.0.0.1:8080', 'http://127.0.0.1:8081']; 
    Plack::App::Proxy->new()->to_app; 
}; 

내가 8080 및 8081의 인스턴스를 시작하고 loadb을 plackup 사용하여로드 밸런서를 시작 난 내 프로그램의 두 복사본을 만들어 다음과 같은 Plack :: 미들웨어 :: 프록시 :로드 밸런서 스크립트를 사용하는 것을 달성하기 위해. pl 명령. 그것은 localhost : 5000에서 잘 듣는다. 그러나 이상하게도 포트 5000에만 8081 만 연결하면 8080으로 전환하면 잘못된 게이트웨이로 오류가 발생합니다. 나는 배포 측면에서 초보자이므로 여기에서 도움이 필요합니다. HTTP 요청이 8081에서만 반환되게하는 원인은 무엇입니까? 그것은 네트워크 계층 오류 또는 뭔가 다른 것? 아파치 loadbalancer를 시도하는 것이 좋은 생각일까요?

+0

정말로 8080에서 수신 대기해야하는 인스턴스가 실제로 실행되고 있습니까? netstat을 사용하여 포트가 실제로 활성화되어 있는지 확인하십시오. – innaM

답변

1

저는 배포자가 아니지만 제가 말할 수있는 것은 배포 스택이이 시점에서 도움이되는 것보다 더 제한적으로 보입니다. Mojolicious의 자체 서버 (daemon, morbo, hypnotoad) 중 하나에서 실행될 때 그들은 이미 강력한 이벤트 루프를 사용하고 있습니다.이 이벤트 루프는 plack 서버를 사용하여 손실됩니다. 또한 윈도우에서는 작업로드 프로세스를 미리 수행하는 hypnotoad를 사용하여 더 많은로드를 허용 할 수 없습니다.

deployment section of the cookbook을 읽은 다음 가능한 경우 Linux 서버에서 nginx 및 hypnotoad를 사용하여 배포하는 것이 좋습니다.

관련 문제