“如果你的 node 服务器前面没有 nginx, 那么你可能做错了。”— Bryan Hughes
Node.js 是使用 最流行的语言— JavaScript 构建服务器端应用的领先工具 。由于可以同时提供 web 服务器和应用服务器的功能,Node.js 被认为是以微服务为基础的开发和部署的关键工具。【相关推荐:Node.js视频教程】
在后端开发中,Node.js 可以替换或者扩展 Java 和 .NET。
Node.js 是单线程非阻塞 I/O, 使其可以支持成千上万的并发操作。这和 NGINX 解决 C10K 问题的方式如出一辙。Node.js 以高效的性能和开发效率著称。
所以,到底哪里做错了?
Node.js 的一些缺陷使得以 Node.js 为基础的系统面临潜在的性能问题甚至崩溃,这在系统流量迅速增长时表现的尤其明显。虽然 Node.js 是处理 web 应用逻辑的很好工具,但它并不擅长处理静态文件,比如图片和 JavaScript 文件,同样不擅长多个服务器间的负载均衡。
为了更好的使用 Node.js, 你需要把缓存静态文件、代理、负载均衡、客户端连接管理等功能交给 NGINX 去做。
下面是一些提高 Node.js 性能的建议:
实现一个反向代理服务器
缓存静态文件
多服务器负载均衡
代理 WebSocket 连接
实现 SSL/TLS 和 HTTP/2
注:提升 Node.js 应用性能的最快方法是修改你的 Node.js 文件来利用多核处理器,查看这篇文章来学习如何充分利用服务器上的多核CPU。
一、实现一个反向代理服务器
相比大多数应用服务器,Node.js 可以很轻松的处理大量的网络流量,但这并不是 Node.js 的设计初衷。
如果你有一个高流量的站点,提高性能的第一步是在你的 Node.js 前面放一个反向代理服务器。这可以保护你的 Node.js 服务器免于直接暴露在网络中,而且可以允许你灵活的使用多个应用服务器做负载均衡和静态文件缓存。
使用 NGINX 在一个已经存在的服务器前做反向代理,作为 NGINX 的一个核心应用,已经被用于全世界成千上万的站点中。
下面是使用 NGINX 作为反向代理服务器的优点:
-
简化了权限处理和端口分配
-
更高效的处理静态资源
-
更好的处理 Node.js 崩溃情况
-
缓解 DoS 攻击的影响
注:这篇文章解释如何在 Ubuntu 14.04 或者 CentOS 环境中使用 NGINX 做反向代理服务器,而且使用 NGINX 在 Node.js 前做反向代理服务器是有效的。
二、缓存静态文件
随着流量的增长,以 Node 为基础的服务器开始显现压力。这时,你可能想做两件事:
-
使用更多nodejs的相关知识,可访问 前端学习网站!!
以上就是5个提高Node.js应用性能的技巧的详细内容,更多请关注gaodaima搞代码网其它相关文章!