zoukankan      html  css  js  c++  java
  • 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. 写程序时尽量复用对象,而不是新生成对象。

  • 相关阅读:
    jQuery小案例
    update-alternatives
    计算机网络备忘
    报文交换 (转自百度百科,方便以后复习)
    erlang supervisor simple_one_for_one实例
    erlang supervisor中启动普通的进程
    erlang四大behaviour之一gen_server(转载)
    用Doxygen+Graphviz生成函数调用流程图(转)
    selenium模块
    request模块
  • 原文地址:https://www.cnblogs.com/lengyuhong/p/2265304.html
Copyright © 2011-2022 走看看