Nodejs·进程

之前对这部分的内容很感兴趣,没想到读起来有点晦涩,还是因为对服务器的知识不是很了解。

  说道服务器一般人都会想到tomcat或者Jboss或者weblogic,现在流行起来的Node总让人不太放心,JS代码也能做服务器?其实不然,首先一个误区就是Node的服务器是JS写出来的....其实它只有表面暴露给用户使用的模块是用js写的,底层的很多东西还是由C/C++完成的。如果运行在不同的操作系统上,node还会基于操作系统切换底层的实现方式。

  再说说Nodejs的特性——最让人印象深刻的就是单线程事件驱动....

  首先单进程单线程,就会出现CPU利用不足的问题。毕竟现在的电脑基本都不是单核的,那么你只有一个进程跑,肯定有个核是在那休息的,这样效率上会让人觉得不够高。因此,Nodejs提供了一个模块——child_process,它可以创建子进程,这样就可以利用余下的CPU资源了。其实如果不是很庞大的应用,单进程就足够了,何必引入多线程增加复杂性呢。

  另外,单进程也会有安全性的问题。比如一旦程序出现BUG,就会导致整个应用的崩溃。如果是线上的应用,那肯定会让人很头疼....这就证明你服务不可靠啊!因此就出现了一种方案,启动一个没有业务含义的主进程,通过这个主进程创建子进程进行业务的响应。这样既避免了单进程的安全问题,也方便进行负载均衡。只不过这个主进程一旦死掉了,整个应用一样会挂掉。但是子进程死掉了,完全可以捕获到异常信息,重新创建继承,恢复集群。

  

  如何做一个高扩展、高可用的集群,这就涉及到集群的知识了,由于知识网不够扎实,就不能扩展了....平时也不会用Node当做生产环境的服务器,因此就不做过多的研究啦....先总结到这吧!

时间: 2024-10-20 13:25:24

Nodejs·进程的相关文章

Nodejs进程崩溃发送邮件

在项目发布后,nodejs进程遇到不可预测的BUG,崩溃后,我们想通过邮件通知开发人员.方便我们查找问题. 正好有一个插件,用起来很方便,记录在此.插件名字是nodemailer.地址https://github.com/andris9/Nodemailer/. 记录下自己在使用过程中碰到的问题,我经常使用的是QQ邮箱,但是例子里试GMail,那这个nodemailer还支持些什么服务呢. 在nodemailer-wellknown中有介绍.   下面是我的实现代码 //对于异常,发送邮件给特定

update_notifier 造成nodejs进程数量增长的问题

最近运维老大j哥找到我说了一个事儿:某私有化部署的线上环境nodejs进程数量多达1000+,对比公版线上环境的66个进程数显得十分诡异.并且单个nodejs进程所占用swap空间也较大,也不释放空间,日积月累下来是一个隐患. 我的debug过程比较顺畅,记录下来以备有同样烦恼者借鉴. 先用top命令发现,系统Task数量高达1300+,然后使用命令: ps -ef | grep node | wc -l 统计出有1306个进程 用ps -ef | grep node 查看进程列表 发现全是:

nodejs进程异常退出处理方法

1. 捕获uncaughtException process.on('uncaughtException', function (err) { //打印出错误 console.log(err); //打印出错误的调用栈方便调试 console.log(err.stack): }); 2. 使用守护进程 例如:node-forever的守护和日志记录功能 安装非常容易 [sudo] npm install forever 使用也很简单 $ forever start app.js 原文地址:htt

学习使用PM2管理nodejs进程

在项目中,偶尔对命令会忘记一下,所以在此记录下pm2的常用命令. 1. pm2是什么?pm2 是一个带有负载均衡的Node应用的进程管理器, 它能够管理Node应用,还能够对应用的运行状态进行监控. 2. pm2 安装及使用 安装命令如下: npm install pm2 -g 比如说 我在项目中有一个 app.js 启动程序,代码如下: const Koa = require('koa'); const app = new Koa(); app.use(async (ctx, next) =>

nodejs学习资料

NodeJS基础 什么是NodeJS JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS,浏览器充当了解析器的角色.而对于需要独立运行的JS,NodeJS就是一个解析器. 每一种解析器都是一个运行环境,不但允许JS定义各种数据结构,进行各种计算,还允许JS使用运行环境提供的内置对象和方法做一些事情.例如运行在浏览器中的JS的用途是操作DOM,浏览器就提供了document之类的内置对象.而运行在NodeJS中的JS的用途是操作磁盘文件或搭建HTTP服务器,NodeJS

Sublime Text3 配置 NodeJs 环境

来源于:http://www.cnblogs.com/qiaojie/p/5560388.html 前言 大家都知道,Sublime Text 安装插件一般从 Package Control 中直接安装即可,当我安装 node js 插件时候,直接通过Package Control 安装,虽然插件安装成功了,但是找不到配置文件 Nodejs.sublime-build 来更改一些配置 .于是去 https://packagecontrol.io/packages/Nodejs 官网上查看,只提供

七天学会NodeJS

NodeJS基础 什么是NodeJS JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS,浏览器充当了解析器的角色.而对于需要独立运行的JS,NodeJS就是一个解析器. 每一种解析器都是一个运行环境,不但允许JS定义各种数据结构,进行各种计算,还允许JS使用运行环境提供的内置对象和方法做一些事情.例如运行在浏览器中的JS的用途是操作DOM,浏览器就提供了document之类的内置对象.而运行在NodeJS中的JS的用途是操作磁盘文件或搭建HTTP服务器,NodeJS

《NodeJS开发指南》学习笔记

欢迎大家指导与讨论 : ) 注:此笔记是基于<NodeJS开发指南>,并不是原著. 第一章——NodeJS简介 NodeJS是一个可以让Javascript运行在服务器端的平台,它为实时Web应用(Real-time Web)开发而生.拥有实时响应,超大规模数据要求下架构的可扩展性.它采用了单线程.异步式I/O.事件驱动式的程序设计模型.统意义上,Javscript是由ECMA.DOM.BOM组成. NodeJS采用的是单线程模型,对于所有的I/O都采用异步式的请求方式,避免了频繁的上下文切换

NodeJS异常处理uncaughtException篇

NodeJS异常处理uncaughtException篇 王龑 — APRIL 08, 2015 很多 NodeJS 的开发者在抱怨异常处理太麻烦,我们会通过一些列博客梳理一下NodeJS中常见的异常处理的手段. 和大多数编程语言一样,在 NodeJS 里可以通过throw抛出一个异常: throw new Error('Catch me'); 为了捕获这个异常需要把代码包在Try Catch中: try{ throw new Error('Catch me'); }catch(e){ // e