发布于 2016-10-22 22:26:29 | 601 次阅读 | 评论: 0 | 来源: 网友投递
Node.js 服务器端的JavaScript
Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台, 用来方便地搭建快速的 易于扩展的网络应用· Node.js 借助事件驱动, 非阻塞I/O 模型变得轻量和高效, 非常适合 运行在分布式设备 的 数据密集型 的实时应用
本文讲述nodejs的安装的运行环境说明。关键工具:nodejs、npm、pm2
1. 名词说明:
1. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台, 用来方便地搭建快速的, 易于扩展的网络应用。类似php、java等服务器端语言。
2. NPM的全称是Node Package Manager,是一个NodeJS包管理和分发工具。简单一点说就是插件管理工具
3. PM2 is perfect when you need to spread your stateless Node.js code accross all CPUs available on a server, to keep all processes alive forever and to 0s reload them.
nodejs 项目的发布和管理工具
2. 安装
1. 下载 nodejs的安装包 http://www.nodejs.org/download/
有多个版本选择,windows、linux、mac 我这里选择linux64位
这也就能直接复制文件的url地址
1.源码安装 (推荐)
下载源码到本地 wget http://nodejs.org/dist/v0.10.29/node-v0.10.29.tar.gz
在命令行中输入:
tar -zxvf 文件名
cd node-v0.10.29
./configure
sudo make
sudo make install
如果没报错,
输入 node -v 查看node的安装版本
输入 npm -v 查看npm的版本
2 . 直接安装
wget http://nodejs.org/dist/v0.10.28/node-v0.10.28-linux-x64.tar.gz
下载好了后,解压:tar -zxvf node-v0.10.28-linux-x64.tar.gz
解压后不需要安装,直接把bin目录加到环境变量中即可。
3.nodejs 程序运行管理
1. node 启动x项目
最简单的nodejs web程序
var http = require('http'),
server = http.createServer(function (req, res) {
res.writeHeader(200, {"Content-Type": "text/plain"});
res.end("Hello Worldn");
});
server.listen(3001,function(){
console.log("http start 3001");
});
保存以上代码 到 app.js 文件,开始运行
node app.js
在浏览器输入http://localhost:3001/ 即可看到输出 hello wolrd。
以上为简陋的项目启动方式,如果你退出终端,项目就停止运行了,也没有详细的内存和使用时长、日志等信息。
2. 神器 pm2
1.安装pm2 官方文档 https://github.com/Unitech/pm2
npm install pm2@latest -g
想要启动一个使用所有CPU核心的集群,你只需要键入如下的指令:
$ pm2 start app.js -i max
pm2 start app.js -i 3 # Will start 3 processes
然后:
$ pm2 list
然后就会显示类似下面的东西(ASCII UI FTW);
就像你看到的,现在你的应用有多少个进程就取决于你的CPU核心数了
按照termcaps-HTOP(Linux下的系统监控与进程管理软件)的方式管理
通过pm2 list命令来观察所有运行的进程以及它们的状态已经足够好了.但是怎么来追踪它们的资源消耗呢?别担心,用这个命令:
$ pm2 monit
你可以得到进程(以及集群)的CPU的使用率和内存占用.
声明:node-usage到目前为止还不支持MacOS(随便什么性能要求),不过它在Linux下运行良好.
现在,让我们来核实一下我们的集群,还有对内存堆栈的垃圾回收,我们假设你已经有一个HTTP基准测试工具(如果没有,你一定要使用WRK):
$ express bufallo //Create an express app
$ cd bufallo
$ npm install
$ pm2 start app.js -i max
$ wrk -c 100 -d 100 http://localhost:3000/
在另一个终端,运行监控选项:
$ pm2 monit
耶~
实时集中log处理
现在你不得不管理多个集群进程:一个爬取数据,一个处理数据,等等…这就意味着大量log,你可以按照老式的方法处理:
$ tail -f /path/to/log1 /path/to/log2 ...
但我们想的很周到,我们增加了logs功能:
$ pm2 logs
快速恢复
现在事情一切顺利,你的进程嗡嗡的运行着,你需要做一次硬重启(hard restart).现在吗?是的,首先,dump掉:
$ pm2 dump
然后,你可以从文件中恢复它:
$ pm2 kill //让我们假设一个PM2停掉了
$ pm2 resurect //我所有的进程又满血满状态复活了
更多操作 查看 https://github.com/Unitech/pm2