博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用pm2常见问题
阅读量:6229 次
发布时间:2019-06-21

本文共 3109 字,大约阅读时间需要 10 分钟。

一、日志

1、pm2 的log怎么查看?(安装pm2后默认日志的路径为~/.pm2/),可以通过pm2 show (name)来查看某个进程下的日志地址

2、修改日志的输出路径,通过写一个程序启动的配置文件apps.yml,在里面可以设置日志的输出地址,输出文件,已经输出的格式。例如:

apps:

  - script : ./app.js
    name : 'loginServer'
    instances: 2
    cwd: /var/service/ACServer/LoginServer
    max_memory_restart: 1G     //  内存超过1G之后自动重启
    exec_mode: cluster
    #log_date_format: "YYY-MM-DD HH:mZ" // 配置日志的输出格式
    #error_file: "/var/data/loginLogs/pm2logs/loginErr.log" 配置out日志的输出文件名
    #out_file: "/var/data/loginLogs/pm2logs/loginOut.log"

3、清楚(pm2 flush)与重载日志(pm2 reloadLogs)

二、开机自启 nodejs 服务器

启动想开机启动的项目 pm2 start app.js保存 pm2 save开机设置 pm2 startup centoschmod +x /etc/init.d/pm2-init.shchkconfig –add pm2-init.sh

三、进行日志分割

使用进行日志管理使得我们的node服务的log以及pm2的log能够得到控制,防止log过多导致把磁盘刷爆。配置看官网,需要注意的是设置retain参数,来限制日志文件数

pm2 set pm2-logrotate:retain 10

 四、pm2 monit命令监控你的内存和CPU

五、异常问题

今天在跑程序的时候pm2 突然报如下错误:

C:\server\MobileServer>pm2 start apps.yml[PM2][WARN] Applications MobileAPI, MobileMapReduce not running, starting...C:\Users\Administrator\AppData\Roaming\npm\node_modules\pm2\lib\API.js:1031intOut(conf.PREFIX_MSG + 'App [%s] launched (%d instances)', data[0].pm2_env.n                                                                    ^TypeError: Cannot read property 'pm2_env' of undefined    at C:\Users\Administrator\AppData\Roaming\npm\node_modules\pm2\lib\API.js:1031:86    at C:\Users\Administrator\AppData\Roaming\npm\node_modules\pm2\node_modules\pm2-axon-rpc\lib\client.js:45:10    at Parser.
(C:\Users\Administrator\AppData\Roaming\npm\node_modules\pm2\node_modules\pm2-axon\lib\sockets\req.js:67:8) at Parser.emit (events.js:107:17) at Parser._write (C:\Users\Administrator\AppData\Roaming\npm\node_modules\pm2\node_modules\pm2-axon\node_modules\amp\lib\stream.js:91:16) at doWrite (_stream_writable.js:301:12) at writeOrBuffer (_stream_writable.js:288:5) at Parser.Writable.write (_stream_writable.js:217:11) at Socket.ondata (_stream_readable.js:540:20) at Socket.emit (events.js:107:17)

按照报错信息应该是:pm2 环境设置问题。

通过pm2 在github上的issue找到了解决方案,地址如下:

https://github.com/Unitech/pm2/issues/2154

只需要运行下:pm2 update 然后重启服务就可以了。

 六、log4js中关于pm2的设置

在pm2zhongoing使用log4js需要对log4js的配置文件进行设置,这里主要参见官方文档:https://log4js-node.github.io/log4js-node/api.html

具体demo配置如:

const logConfig =  appenders: {
console: { type: 'console' }, file: { type: 'file', filename: './logs/application.log', maxLogSize: 104800, backups: 100 }, date_file: { type: 'dateFile', filename: "./logs/date", alwaysIncludePattern: true, pattern: "-yyyy-MM-dd.log" } }, categories: { default: {appenders: ['console'], level: 'info'}, errorLog: {appenders: ['console', 'file', 'date_file'], level: 'error'} }, // 关于pm2的设置 pm2: true, disableClustering: true};module.exports = logConfig;

前不久在测试服上开启一个进程的时候没加disableClustering参数,后来开启多进程之后发现只有第一个进程能看到正常的log4js的log,而其他进程则没有,回来阅读api,设置disableClustering:true。这样

每个进程的log就出现了。

七、是否需要nginx

nginx可以做的事情主要有两个:

1、反向代理,实现简单的负载均衡: 如果有多台服务器或者一台服务器多个端口,可以考虑用nginx。2、静态资源缓存:把一些静态资源(如静态页面,js等资源文件)放到nginx里,可以极大的提高服务的性能。

 

参考:https://github.com/jawil/blog/issues/7/

 

转载地址:http://uttna.baihongyu.com/

你可能感兴趣的文章
来到外企几天的感受
查看>>
<a>之间怎么放值</a> 挺简单的,第一次遇到···
查看>>
业界领袖们曾希望在毕业时得到的建议
查看>>
Linux禁用IPv6
查看>>
【转】linux 用户线程、LWP、内核线程学习笔记
查看>>
各种书籍
查看>>
使用注解开发springmvc
查看>>
BZOJ-4326: NOIP2015 运输计划 (二分+LCA+树上差分)
查看>>
linux并发控制之读写信号量
查看>>
MySQL表的四种分区类型
查看>>
Razor模板引擎
查看>>
Log4Net 日志配置[附带源码]
查看>>
企业级Nginx Web服务优化实战
查看>>
Google地图,Baidu地图数据供应商
查看>>
抽象类
查看>>
node溢出
查看>>
【转】充满浮躁的程序员
查看>>
jquery tips 提示层
查看>>
Python 之IO模型
查看>>
SSH项目tomcat发布时,Initializing Spring root WebApplicationContext卡死不动
查看>>