Nodejs·进程
之前对这部分的内容很感兴趣,没想到读起来有点晦涩,还是因为对服务器的知识不是很了解。
说道服务器一般人都会想到tomcat或者Jboss或者weblogic,现在流行起来的Node总让人不太放心,JS代码也能做服务器?其实不然,首先一个误区就是Node的服务器是JS写出来的....其实它只有表面暴露给用户使用的模块是用js写的,底层的很多东西还是由C/C++完成的。如果运行在不同的操作系统上,node还会基于操作系统切换底层的实现方式。
再说说Nodejs的特性——最让人印象深刻的就是单线程事件驱动....
首先单进程单线程,就会出现CPU利用不足的问题。毕竟现在的电脑基本都不是单核的,那么你只有一个进程跑,肯定有个核是在那休息的,这样效率上会让人觉得不够高。因此,Nodejs提供了一个模块——child_process,它可以创建子进程,这样就可以利用余下的CPU资源了。其实如果不是很庞大的应用,单进程就足够了,何必引入多线程增加复杂性呢。
另外,单进程也会有安全性的问题。比如一旦程序出现BUG,就会导致整个应用的崩溃。如果是线上的应用,那肯定会让人很头疼....这就证明你服务不可靠啊!因此就出现了一种方案,启动一个没有业务含义的主进程,通过这个主进程创建子进程进行业务的响应。这样既避免了单进程的安全问题,也方便进行负载均衡。只不过这个主进程一旦死掉了,整个应用一样会挂掉。但是子进程死掉了,完全可以捕获到异常信息,重新创建继承,恢复集群。
如何做一个高扩展、高可用的集群,这就涉及到集群的知识了,由于知识网不够扎实,就不能扩展了....平时也不会用Node当做生产环境的服务器,因此就不做过多的研究啦....先总结到这吧!

Nodejs·进程的更多相关文章
- [批处理]守护NodeJS进程
背景: 日常进行CI过程中,使用NodeJs方式:GIT更新->检测是否需要编译->调用IncrediBuilder编译->读取编译日志判断是否通过->调用7z打包 问题: 持 ...
- 使用PM2管理nodejs进程分享
摘要:pm2 是一个带有负载均衡功能的Node应用的进程管理器.本文主要介绍了详解使用PM2管理nodejs进程,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧,希望能帮助 ...
- update_notifier 造成nodejs进程数量增长的问题
最近运维老大j哥找到我说了一个事儿:某私有化部署的线上环境nodejs进程数量多达1000+,对比公版线上环境的66个进程数显得十分诡异.并且单个nodejs进程所占用swap空间也较大,也不释放空间 ...
- nodejs进程管理
NodeJS可以感知和控制自身进程的运行环境和状态,也可以创建子进程并与其协同工作,这使得NodeJS可以把多个程序组合在一起共同完成某项工作,并在其中充当胶水和调度器的作用. 我们已经知道了Node ...
- Linux_CentOS下搭建Nodejs 生产环境-以及nodejs进程管理器pm2的使用
nodejs安装:https://www.cnblogs.com/loaderman/p/11596661.html nodejs 进程管理器 pm2 的使用 PM2 是一款非常优秀的 Node 进程 ...
- NodeJS 进程是如何退出的
有几种因素可以导致 NodeJS 进程退出.在这些因素中,有些是可预防的,比如代码抛出了一个异常:有些是不可预防的,比如内存耗尽.process 这个全局变量是一个 Event Emitter 实例, ...
- nodejs(三) --- nodejs进程与子进程
嗯,对于node的学习还远远不够,这里先做一个简单的api的记录,后续深入学习. 第一部分:nodejs中的全局对象之process进程对象 在node中的全局对象是global,相当于浏览器中的wi ...
- nodeJS进程管理器pm2
pm2是一个带有负载均衡功能的Node应用的进程管理器.当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完美的. PM2是开源的基于Nodejs的进程管 ...
- 学习使用PM2管理nodejs进程
在项目中,偶尔对命令会忘记一下,所以在此记录下pm2的常用命令. 1. pm2是什么?pm2 是一个带有负载均衡的Node应用的进程管理器, 它能够管理Node应用,还能够对应用的运行状态进行监控. ...
随机推荐
- 解决php中json_decode的异常JSON_ERROR_CTRL_CHAR
该字符中含了ASCII码ETB控制符,即\x17导致json解析失败 (截图中显示ETB是因为用了Sublime text2) 解决方法如下:去掉0-31的控制符再进行decode $result = ...
- mybatis报invalue types()错误
错误信息: Cause: org.apache.ibatis.reflection.ReflectionException: Error instantiating class cn.qd.mybat ...
- Oracle安装:64位电脑安装64位Oracle、PLSQL步骤
步骤: 1.安装64位Oracle 2.安装64位PLSql 3.将11.2.0.win32的压缩包解压,放在Oracle的安装目录:product下 4.配置PLSQL参数: Tools -> ...
- js生成验证码并检验
<html> <head> <title>验证码</title> <style type="text/css"> #co ...
- html或者jsp页面引用jar包中的js文件
一,页面上引用jar包中的js文件的方法 使用java web框架AppFuse的时候发现,jquery.bootstrap等js框架都封装到jar包里面了.这些js文件通过一个wro4j的工具对其进 ...
- 超级编辑器--VIM的常见操作
如下,都是我常用的 删除单词: d + w 关闭vim窗口: :q 或者 shift + zz 全部向左移: shift + v ---> shift + < ---&g ...
- ExtJs 3.0 动态生成 CheckBox
在开发过程中,往往需要利用数据动态生成Checkbox.如权限节点.考试答案,调查选项等等.在Extjs中,有两种方法来获取后台数据,一是Ext.Ajax()方法,第二种是利用 Store,store ...
- Introduction ch3
[1] Don’t reinvent the wheel; use libraries.[2] Don’t believe in magic; understand what your librari ...
- Hyper-V初涉:Hyper-V虚拟机常规操作
a. 连接到虚拟机与开机 在Hyper-V管理器中双击待启动的虚拟机或在待启动的虚拟机上右键选择"启动"即可完成连接虚拟机的操作. 若此时虚拟机正在运行则直接进入虚拟机界面,若虚拟 ...
- 移动端web开发 问题
1.APP 返回按钮 <a href='#' onclick='javascript:history.back(-1);'></a> 返回有问题需要使用 href='javas ...