2011-12-11 2 views
2

현재 Linode를 사용하여 응용 프로그램을 배포하고 있습니다. 2 개의 서버, 1 개의 Load Balancer가있는 1 개의 데이터베이스 서버가 있습니다.Scale SocketIO (NowJS)

데이터베이스로 Redis를 사용하고 대화방을 구현하는 NowJS를 사용하고 있습니다. Pub/Sub를 사용하면 모든 것이 잘 작동합니다. 이제 클러스터를 사용하여 멀티 코어 서버를 활용하고 싶습니다. 그러나 클러스터를 적용 할 때 이상한 상황에 처하게되었습니다. 경우에 따라 앱이 작동하고 때로는 약 25 %가 작동하지 않고 75 %가 작동하지 않습니다 (4 프로세스 실행). 그러므로 클러스터는 nowJS가 제대로 작동하지 않는다고 생각할 수 있습니다. 지금, 나는 RedisStore을 (난 아직도 SocketIO에 대한 RedisStore와 함께 술집/서브를 사용할 수 있습니까? 또는 RedisStore로 완전히 전환 할 수 있습니다) 클러스터링에 대한

2.Forget 및 SocketIO에 결정을

1.Switch을 만들어 사용해야합니다 필요한 경우 서버를 더 추가하십시오 (여러 코어가 사용되지 않으므로 리소스가 낭비됩니까?)

P/s : 나쁜 영어로 유감입니다.

+0

나는 NowJS 프로그래머로부터 이메일을 받았으며, "NowJS의 분산 버전을 이미 사용하고 있지만 우리는 내년 초에"Now "라는 새롭고 더 큰 릴리스를 가지고 있습니다. – BRampersad

+0

nowjs를 사용하는 것이 socket.io를 직접적으로 사용하는 것보다 쉽기 때문에 위대할 것입니다. –

답변

0

당신이 25 %와 75 %에 대해 무슨 말을하고 있었는지 모르겠지만 CPU/메모리를 언급한다면, Node는 할 일이 없을 때 Node가 매우 효율적임을 알아야합니다. 상황을 설명하십시오.

또한 여러 코어를 사용하는 유일한 방법은 더 많은 프로세스를 생성하여 클러스터를 사용하는 것입니다.

RedisStore를 사용하기 때문에 (Socket.IO는 하나의 프로세스 대신 단일 프로세스 => 단일 프로세스가 아닌 연결 데이터를 유지할 수 있음), pub/sub의 Redis가 우수하므로이 독립 실행 형을 다음과 함께 사용할 수 있습니다. Socket.IO 또한 (NowJS는 Socket.IO 위의 추상화의 또 다른 계층입니다.)

여러 프로세스를 사용하고 수직 확장 (추가 기계 추가) 후에 만 ​​수평 확장 (시스템 업그레이드)을 시도해야합니다.

+0

응용 프로그램을 사용하면 3 번 실패하고 한 번만 작동합니다. –

+0

"실패"로 정확히 무엇을 의미합니까? 클라이언트가 NowJS (실제 Socket.IO는 후드)에 연결할 수 없습니까? – alessioalex

+0

예 NowJS 개체를 초기화 할 수 없습니다. 클러스터를 사용할 때 –