2017-03-11 9 views
0

예를 들어 Python 세계에서 어떤 이유로 든 실행이 중지 된 경우 uWSGI 또는 Gunicorn을 사용하여 Python 웹 앱을 다시 시작합니다. 메모리 누수, 예기치 않은 런타임 오류 등이 있습니다. 그러나 이것은 연결이 끊어지지 않는 방식으로 이루어집니다 (따라서 502는 없습니다).많은 양의 트래픽을 수신하는 노드 응용 프로그램을 안전하게 다시 시작할 수 있습니까?

노드에 대한 옵션을 보면 PM2는 인기있는 선택 보인다하지만 난이 문제가 :

  1. 그것은 (어떤 502S를하시기 바랍니다) 배수없는 연결에 대한 동일한 보장을 만들 수 있습니까?
  2. PM2를보기 전에 대기 시간이 밀리 초 (밀리 초가 추가 된 횟수)마다 중요한 성능 저하가 발생하는 것으로 보였습니다.

그래서 제 질문은 성능이 심각하게 고려하고 다시 시작하면서 연결을 삭제할 수 없습니다 곳이며, 노드의 uWSGI 및 Gunicorn 등가물은 무엇인가?

답변

0

여기에 몇 가지 전략은 다음과 같습니다

  1. 사용은 N 작업자 프로세스와 클러스터링을 Node.js를. 그런 다음 단일 작업자 프로세스를 다시 시작할 수 있으며 전반적인 가용성에 영향을 미치지 않습니다.

  2. 여러 클러스터 앞에로드 균형 조정기를 사용하십시오. 그런 다음 트래픽을 하나의 클러스터에만 보내도록로드 밸런서를 임시 구성하십시오. 구성 해제 된 클러스터가 열려있는 모든 연결로 끝나면 해당 클러스터의 모든 프로세스를 다시 시작할 수 있습니다.

  3. 유연성을 높이려면 별도의 컴퓨터에서 여러 클러스터를 사용하십시오. 전체 유지 관리를 중단하지 않고도 하드웨어 유지 관리를 위해 서버 시스템을 사용할 수 있습니다.

데이터베이스와 같은 여러 클러스터 된 프로세스간에 리소스가있는 경우 중단없이 다시 시작할 수 있도록 리소스를 중복해야합니다.

물론 시스템을 재부팅하거나 유지 보수 할 때 서비스의 일부를 사용하지 않으면 서비스 용량이 충분 해 지므로 일반적으로 전체 서비스 부하가 적을 때 (예 : 가장 큰 사용자 기반).

PM2는 클러스터링 및 원활하게 클러스터 일부를 다시 시작하는 것과 같이 여기서 권장되는 부분을 수행 할 수있게 해주는 도구 중 하나입니다. 다른 도구가 있습니다.

+0

@maxcountryman -이 답변에 대한 질문이 있습니까? – jfriend00