我有一个使用MySQL,MongoDB,NodeJS(和SocketIO)的Rails应用程序。现在,应用程序(一切)托管在1个框内。我想知道当用户数量增长时我应该怎么做。我应该考虑哪些因素来确定是否需要在另一个框中托管一个单独的元素(如MySQL,Node,Mongo在每个单独的框中)。我应该把那个单个盒子做得更大吗?我可以选择最佳实践方法吗?
如果你们能为我提供有关此主题的参考,指南和研究。请做。我是部署和服务器配置的超级菜鸟。
答案 0 :(得分:4)
我们不久前在工作中遇到了这种困境,发现只需升级到更强大的单一盒子就足够了,并且可以让我们有足够的空间进一步增长3-4倍。
最重要的是找出潜在的瓶颈。
在我们的案例中,存在2个瓶颈。磁盘I / O和数据库利用内存的能力。
在我们的新服务器上,我们配置了硬盘阵列,以便最大化磁盘I / O,我们升级了数据库软件以允许它使用更多内存。事实上,DBMS现在将整个数据库保存在内存中,并且只根据需要对磁盘执行写操作。这显着改善了性能。
答案 1 :(得分:3)
简短的回答是把一切都移到自己的盒子里。更长的答案是:这取决于您的应用的使用情况。
我建议您使用Nagios或类似工具来监控应用的资源利用率 - 即每个服务使用多少CPU和RAM。如果每个人都开始使用太多资源(并且您的页面加载速度受到负面影响),请将其移至自己的框中。
然后继续监视那个盒子,在必要时加强或者将它们打碎。
high scalability blog有助于阅读其他人的所作所为。