开心学习系列学习笔记-----nodejs缺点
不支持故障恢复
不知你是否在调试的过程中注意,当程序有错误发生时,整个进程就会结束,需要重
新在终端中启动服务器。这一点在开发中无可厚非,但在产品环境下就是严重的问题
了,因为一旦用户访问时触发了程序中某个隐含的bug ,整个服务器就崩溃了,将无
法继续为所有用户提供服务。在部署Node.js 应用的时候一定要考虑到故障恢复,提
高系统的可靠性。
没有日志
对于开发者来说,日志,尤其是错误日志是及其重要的,经常查看它可以发现测试时
没有注意到的程序错误。然而这个服务器运行时没有产生任何日志,包括访问日志和
错误日志,所以有必要实现它的日志功能。
无法利用多核提高性能
由于Node.js是单线程的,一个进程只能利用一个CPU 核心。当请求大量到来时,单
线程就成为了提高吞吐量的瓶颈。随着多核乃至众核时代的到来,只能利用一个核心
所带来的浪费是十分严重的,我们需要使用多进程来提高系统的性能。
独占端口
假如整个服务器只有一个网站,或者可以给每个网站分配一个独立的IP 地址,不会有
端口冲突的问题。而很多时候为了充分利用服务器的资源,我们会在同一个服务器上
建立多个网站,而且这些网站可能有的是PHP ,有的是 Rails,有的是 Node.js。不能每
个进程都独占80端口,所以我们有必要通过反向代理来实现基于域名的端口共享。
需要手动启动
先前每次启动服务器都是通过在命令行中直接键入命令来实现的,但在产品环境中,
特别是在服务器重启以后,全部靠手动启动是不现实的。因此,我们应该制作一个自
动启动服务器的脚本,并且通过该脚本可以实现停止服务器等功能。
开心学习系列学习笔记-----nodejs缺点的更多相关文章
- 开心菜鸟学习系列学习笔记------------nodejs util公共函数
global 在最外层定义的变量: 全局对象的属性: 隐式定义的变量(未定义直接赋值的变量). 一.process process 是一个全局变量,即 global 对象的属性 ...
- 开心菜鸟系列学习笔记--------初探Nodejs(了解篇)
一Node.js开始学习了! 1) 输出hellow worlds a.建一个js文件 hello.js 写 console.info('hellow world !!!'); 进入终 ...
- 开心菜鸟系列学习笔记------javascript(5)
一.this的关系 1)全局代码中的this 2)函数代码中的this在函数代码中使用this时很有趣,这种情况很难且会导致很多问题. 这种类型的代码中,this值的首要特点(或许是最主要 ...
- 开心菜鸟系列学习笔记-------javascript(3)
一.原型链: 1)Object 是一个属性的集合,并且都拥有一个单独的原型对象.,这个原型对象object可以是一个object或者null值 2)不过一般来说,我们会使用__内部属性名__下 ...
- 开心菜鸟系列学习笔记------------javascript(6)
一.作用域链 1)函数的生命周期: 函数的生命周期分为创建和激活阶段(调用时),让我们详细研究它. 作用域链与一个执行上下文相关,变量 ...
- 开心菜鸟系列学习笔记------javascript(4)
一.全局上下文中的变量对象: 1)全局对象(Global object) 是在进入任何执行上下文之前就已经创建了的对象:这个对象只存在一份,它的属性在程序中任何地方都可以访问,全局对象的 ...
- MVA Universal Windows Apps系列学习笔记1
昨天晚上看了微软的Build 2015大会第一天第一场演讲,时间还挺长,足足3个小时,不过也挺震撼的.里面提到了windows 10.Microsoft edge浏览器.Azure云平台.Office ...
- 《Machine Learning》系列学习笔记之第一周
<Machine Learning>系列学习笔记 第一周 第一部分 Introduction The definition of machine learning (1)older, in ...
- (转)深度学习word2vec笔记之基础篇
深度学习word2vec笔记之基础篇 声明: 1)该博文是多位博主以及多位文档资料的主人所无私奉献的论文资料整理的.具体引用的资料请看参考文献.具体的版本声明也参考原文献 2)本文仅供学术交流,非商用 ...
随机推荐
- CryEngine3教程合辑
转载自http://tieba.baidu.com/p/3663800102 作者:Tytaa 中文名称: CryEngine游戏关卡设计训练视频教程第一季 外文名称: 3DMotive In ...
- STL string常用操作指令
s.insert(pos,args); 在pos之前插入args指定的字符.pos可以是一个下标或一个迭代器.接受下标的版本返回一个指向s的引用;接受迭代器的版本返回指向第一个插入字符的迭代器. s. ...
- poj 3792 Area of Polycubes
http://poj.org/problem?id=3792 #include <cstdio> #include <cstring> #include <cmath&g ...
- LeetCode_Combination Sum II
Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in ...
- 将某个Qt4项目升级到Qt5遇到的问题(13条方法)
本文转载自http://hi.baidu.com/xchinux/item/9044d8ce986accbb0d0a7b87 一.将某个QT4项目改成QT5遇到的问题 该Qt4项目以前是使用Qt4.7 ...
- MySQL常用Json函数
官方文档:JSON Functions Name Description JSON_APPEND() Append data to JSON document JSON_ARRAY() Create ...
- hdu5080:几何+polya计数(鞍山区域赛K题)
/* 鞍山区域赛的K题..当时比赛都没来得及看(反正看了也不会) 学了polya定理之后就赶紧跑来补这个题.. 由于几何比较烂写了又丑又长的代码,还debug了很久.. 比较感动的是竟然1Y了.. * ...
- 【公告】CSDN个人空间将于2014年4月20日全新改版上线
尊敬的用户: 你们好! CSDN个人空间将在2014年4月20日全新改版上线! CSDN个人空间是2008年8月推出的服务,致力于给广大用户提供在线技术分享和资料 ...
- [RxJS] Refactoring Composable Streams in RxJS, switchMap()
Refactoring streams in RxJS is mostly moving pieces of smaller streams around. This lessons demonstr ...
- ARM指令集——条件执行、内存操作指令、跳转指令
ARM 汇编指令条件执行 在ARM模式下,任何一条数据处理指令可以选择是否根据操作的结果来更新CPSR寄存器中的ALU状态标志位.在数据处理指令中使用S后缀来实现该功能. 不要在CMP,CMN,TST ...