3

MySQL, MongoDB, NodeJS (및 SocketIO)를 사용하는 Rails 앱이 있습니다. 지금은 앱 (모든 것)이 1 상자 안에 호스팅됩니다. 사용자 수가 증가 할 때 무엇을해야하는지 알고 싶습니다. 별도의 요소를 MySQL, Node, Mongo와 같은 다른 상자에 호스트해야하는지 여부를 결정하기 위해 고려해야 할 요소는 무엇입니까? 하나의 상자를 더 크게 만들어야하나요? 내가 할 수있는 최선의 방법이 있습니까?하나의 서버에 여러 대의 서버 또는 모든 서버가 있습니까?

여러분이이 주제와 관련하여 참조 자료, 가이드, 연구 자료를 제공 할 수 있습니다. 제발. 나는 배포 및 서버 구성에서 슈퍼 멍청하다.

답변

3

짧은 답변은 모든 것을 자체 상자로 옮기는 것입니다. 더 긴 대답은 앱의 사용법에 달려 있습니다.

앱의 리소스 사용률, 즉 각 서비스에서 사용하는 CPU와 RAM의 양을 모니터링하기 위해 Nagios 또는 유사한 것을 사용하는 것이 좋습니다. 각 사용자가 너무 많은 리소스를 사용하기 시작하면 (페이지로드 속도에 부정적인 영향을 미침) 자체 상자로 옮깁니다.

그런 다음 해당 상자를 계속 모니터하고 필요하면 육우로 나누거나 샤드 아웃하십시오.

high scalability blog은 다른 사람들이 한 것을 읽는 데 좋습니다.

4

우리는 잠시 전에 직장에서이 딜레마에 직면했으며 더 강력한 단일 상자로 업그레이드하는 것이 충분하고 3-4 번까지 더 성장할 여지가 있음을 발견했습니다.

잠재적 인 병목 현상을 파악하는 것이 가장 중요합니다.

우리의 경우에는 병목 현상이 2 개 있습니다. 디스크 I/O 및 데이터베이스의 메모리 사용 기능

새로운 서버에서는 디스크 I/O를 최대화 할 수 있도록 하드 드라이브 어레이를 구성했으며 더 많은 메모리를 사용할 수 있도록 데이터베이스 소프트웨어를 업그레이드했습니다. 실제로 DBMS는 전체 데이터베이스를 메모리에 보관하고 필요할 때만 디스크에 쓰기 작업을 수행합니다. 이로 인해 성능이 크게 향상되었습니다.