当前位置: 首页 > news >正文

nodejs的一些局限

       这段时间nodejs在国内发展是相当迅速的。这门语言“非阻塞,异步,事件驱动”的特点使其非常适合用于高并发量的web服务中。但正所谓“人无完人”,虽然nodejs有很多优点,但依然存在一些问题和缺陷。了解一门语言的优点很重要,但了解它的局限,并在现实开发中尽量规避,更加重要。

       一. 内存限制 

      nodejs是基于google的v8引擎 ,而v8对单个node实例做了内存限制,在32位的系统中默认限制为512m,在64位的系统中则是1g。在游览器端,javascript有1G的内存肯定够了,但在web服务器端,1G就可能不够。以1G为例,每个连接都要占用100M的内存,这样服务最多只能建立10个连接,这显然是不行的。

     据说nodeje为我们提供了一个执行参数用来改变这一个限制,执行语句:    

node test.js –max-old-space-size=1000 

     但这样仍然是有限制的,32位是1g,64位为1.7g。

     

     解决方案:

    1. 开始更多nodejs进程

    2. 限制连接数

  3. 使用buffer。比如:http://zheye.org/asks/4da05d30fd503c24f9000001

 

    二.GC(垃圾回收) 

      和java一样,nodejs的V8引擎是有系统进行垃圾回收的,而这是程序员所无法控制的,程序员只能标志这个对象不再使用(obj=null),使得下次gc回收该对象的内存。更加可怕地是,v8在进行gc时,nodejs程序会暂停运行,这时向该程序发起的请求都会被忽略掉,造成服务不能访问。

    解决方案:

     1. 写程序时尽量复用对象,而不是新生成对象。

 

 

转载于:https://www.cnblogs.com/lengyuhong/archive/2011/11/27/2265304.html

相关文章:

  • 操作无法完成。键入的打印机名不正确,或者指定的打印机没有连接到服务器上...
  • 红黑树源码及错误解析
  • 修复垂直滑动RecyclerView嵌套水平滑动RecyclerView水平滑动不灵敏问题
  • 无线网络覆盖 郑州大学第三届acm比赛试题 n 199
  • 回数
  • 生成备案号例如80-027-1-001 规则为:企业编号-所在区号-产品类别-序号
  • 颠覆你的认知,带你领略史上最为齐全的微软黑科技之旅
  • 时代杂志评年度十大科技产品 iPad 2居首
  • 成功恢复FAT32误格式化后所有碎片文件(已覆盖的除外)
  • maya羽毛制作插件
  • 如何使用sendEmail发送邮件
  • TightVNC 企业内部部署
  • 请读者帮忙投个票喔
  • 网吧游戏的三层更新
  • DOM常用属性和方法汇总
  • es6
  • Fabric架构演变之路
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JS实现简单的MVC模式开发小游戏
  • Linux后台研发超实用命令总结
  • MySQL数据库运维之数据恢复
  • PHP 小技巧
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • vue数据传递--我有特殊的实现技巧
  • 高性能JavaScript阅读简记(三)
  • 基于组件的设计工作流与界面抽象
  • 讲清楚之javascript作用域
  • 项目实战-Api的解决方案
  • 新书推荐|Windows黑客编程技术详解
  • 一道闭包题引发的思考
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 责任链模式的两种实现
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • 第二十章:异步和文件I/O.(二十三)
  • ​比特币大跌的 2 个原因
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #NOIP 2014# day.2 T2 寻找道路
  • #QT项目实战(天气预报)
  • ${ }的特别功能
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (poj1.2.1)1970(筛选法模拟)
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (转)jQuery 基础
  • (转)winform之ListView
  • (转)大道至简,职场上做人做事做管理
  • (转载)CentOS查看系统信息|CentOS查看命令
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .net操作Excel出错解决
  • .NET中的十进制浮点类型,徐汇区网站设计
  • @synthesize和@dynamic分别有什么作用?
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945