首先 - 关于我的背景:我已经编程了一段时间(此时为10年),并且在编写想法时非常称职。我在一年多前开始从事网络应用程序编程工作,幸好发现了nodeJS,它使网络应用程序的创建感觉更像传统的编程。现在,我有一个node.js应用程序,我已经开发了一段时间,现在正在网络上生产。 我的主要困惑源于这样一个事实:我对网络开发的世界都很陌生,并且在监控我的应用程序时并不知道什么是重要的,什么不重要。
我正在使用Joyent SmartMachine,看看他们提供的分析选项有点压倒性。有很多不同的选项和配置,我不知道每个分析真正起作用的目的。对于下面的问题,我会感谢任何答案,无论是针对Joyent的云分析还是完全一般的。
现在,我主要关心的是弄清楚我的应用程序如何使用我运行它的服务器。我想知道我的应用程序是否分配了适当数量的资源。它收到的请求数量是否会使服务器过度使用,还是需要额外的资源?为此目的,为NodeJS应用程序查看哪些分析非常重要? (如果有所不同,可以在单独的服务器上使用MongoDB和Redis)
在管理正在生产的服务器时,还有哪些其他统计数据通常非常重要?我习惯于运行一次以执行特定操作的程序(例如,一旦计算完图像就完成运行的光线跟踪器),而不是连续运行并与许多客户端交互的web应用程序。我确信有很多事情对长期服务器管理员来说是显而易见的,而不是像我这样的新手。
具体处理NodeJS时需要注意什么?在处理NodeJS的单线程事件循环与更标准的服务器系统时,哪些统计/分析变得特别重要?
我还有其他关于数据库如何影响等式的问题,但我认为这已经足够了......
答案 0 :(得分:15)
我们一直在运行node.js近一年,从0.4和现在的0.8系列开始。 Web应用程序是基于mongo,redis和memcached的表达式2和3。
很少有事实。
我的建议。
监控cpu,报告内存统计信息并重新启动阈值
答案 1 :(得分:6)
无论哪种类型的Web应用程序,NodeJS或其他类型,负载测试都将回答您的应用程序是否具有适当数量的服务器资源。我最近发现的一个很好的网站是Load Impact。
要回答的真正问题是,随着并发用户数量的增加,加载时间何时开始增加?当您到达一定数量的并发用户时达到临界点,之后服务器性能将开始降低。因此,请根据您希望在不久的将来访问您网站的用户数进行负载测试。
您如何估算出您期望的用户数量?
在您的网页上安装Google Analytics或其他分析包是必须!通过这种方式,您可以查看每月有多少用户访问您的网站,以及每月访问次数的增长情况,这有助于预测未来的预期访问次数,从而预测服务器的预期负载。
即使我知道用户数量,我如何估算实际负载?
答案在所有浏览器中提供的F12开发工具中。在任何浏览器中打开您的网站并按F12(或Opera Ctrl + Shift + I),这将打开浏览器的开发工具。在Firefox上确保安装了Firebug,在Chrome和Internet Explorer上它应该是开箱即用的。转到网络或网络标签,然后刷新您的页面。这将显示HTTP请求的数量,每页加载的带宽使用量!
因此,计算每日服务器负载的公式很简单:
每页加载的HTTP请求数X每个用户每天加载的平均页数X预期的并发用户数=每天服务器的HTTP请求总数
和...
每页传输的MB传输数量X每个用户每天的平均加载数量X预期的并发用户数=每天所需的总带宽数
我总是发现每天计算这些数字更容易,然后将其推断为数周和数月。
答案 2 :(得分:3)
Node.js是单线程的,所以你一定要为你的机器拥有的每个cpu启动一个进程。到目前为止,Cluster是实现这一目标的最佳方式,还有一个额外的好处,就是能够重新启动死亡工人并发现无反应的工人。
您还需要进行负载测试,直到您的请求开始超时或超出您认为合理的响应时间。这将使您了解服务器可以处理的上限。 Blitz是要查看的众多选项之一。
我从未使用过Joyent的统计信息,但NodeFly及其node-nodefly-gcinfo是监控节点进程的绝佳工具。