如标题所示,我需要nodejs和mongodb来处理每秒5000个请求。 马上就是蝙蝠 我们最终会成长很多次。
我最初的想法是把每个机器放在不同的机器上,但我不确定是否应该从小机器开始,准备很快地扩展,或者从较大的机器开始,然后扩展。
无论哪种方式,我完全期望最终扩大这两个,但我想知道高档触发器会是什么。 我会扩大CPU或内存使用量吗? 如果在CPU上,我应该尝试保持平均CPU使用率?
哦,是的,我会从10gen购买支持,以便他们可以审查我的文档模型,并确保我以最有效的方式存储数据。
“一般来说”,没有数字你应该保持你的CPU。 如果你有一个四核系统,并且你的应用程序在平均负载为12的情况下运行良好,那么给你更多的权力。 你真的需要自己testing和确定这些东西。 更多的是反映在CPU负载平均值上,而不仅仅是CPU在做什么。
我会留下基本的性能调整,如客户端渲染,并行,caching,nginx等到您的谷歌search技巧和跳过一些独家的,
1.禁用Nagle的algorithm:如果你熟悉实时networking编程,你会认识到这个algorithm是一个普通的套接字调整。 这使得每个响应离开服务器更快。
通过node.js API socket.setNoDelay可以获得调整,该值在每个长轮询COMET连接的套接字上设置。
2. Mongodb连接池:创build与数据库的新authentication连接非常昂贵。 因此,不要为每个数据库请求创build和销毁连接,而是尽可能重新使用现有连接。
你可以在飞机或者媒体上find很多其他的性能调整,但是在你的情况下,这两个影响最大。
注意:您部署拓扑和负载平衡策略也将产生真正的差异。 我会说,在节点服务器前面使用一个NGINX作为RP,让它处理多个节点实例之间的所有负载平衡!