使用pm2怎么进行pm2打印日志生成时间分割

版权声明:本文为博主原创文章未经博主允许不得转载。 /m0_/article/details/

三、配置node环境变量

五、测试和相关指令介紹

PM2是一个带有负载均衡功能的Node应用嘚进程管理器PM2可以利用服务器上的所有CPU,并保证进程永远都活着0秒的重载,部署管理多个Node项目PM2是Node线上部署完美的管理工具。

直接调用了startFile方法主要代码如下:

 
 
 
首先执行了
executeRemote方法,要说这个方法的作用就要说道Satan和God这两个对象的意义了。从名称可以看出Satan是邪恶的God是正义的,Satan负责对实例进行维护操作比如杀死,重启等God负责实例的功能。那么executeRemote方法就是Satan通过rpc调用God的方法

findByScript方法作用是在God保存的实例缓存中,用脚本名作为key查找相关腳本的实例,如果找到相关的实例信息则证明已经启动了当前脚本实例,不需要启动除非是强制启动,则会报错退出
在确定了没有楿同实例的情况下,又传入了prepare调用God的prepare方法:
可以看到将参数传入了execute函数,并且execute函数的回调中,递归了自己这样就达到了启动多个實例的目的。而这个execute函数就是核心逻辑了:
execute函数完善了一下附带的cluster状态信息然后fork出一个新的worker,将worker存在缓存中并且处理好上线事件。
源碼看到这就完了吗当然没有,还有很多疑问为啥cluster只需要fork就行了?为什么没有看到我们脚本的执行那就带着疑问继续看吧。
继续看God.js茬最上部,引入cluster的时候有一句对cluster初始化的代码:
配置了fork的执行脚本的默认值,为ProcessContainer.js并且紧接着,对cluster的上线和掉线进行了处理在cluster上线的時候,更新cluster的状态在cluster掉线退出的时候,对cluster进行自动重启

首先是从环境变量中取出要执行脚本的路径:var script = process.env.pm_exec_path;,这个pm_exec_path就是执行脚本的值是在の前prepare的时候处理好的。并且同样在这一步的时候处理了pm2打印日志生成时间文件的分隔,将各个不同实例的pm2打印日志生成时间输出在不同嘚文件中

到此,pm2的核心逻辑已经走了一个流程了其他诸如监控之类的功能,相信有了核心逻辑的基础应该很容易实现

 
读完pm2的源碼,了解了怎样无入侵代码实现多核的利用这是一种比较优雅的实现,让我们可以写出一个通用工具而不是框架来做这件事情
看到这裏,我推荐大家都一起去实现一个简单的pm2看过不代表掌握,一定要动手实现

我要回帖

更多关于 pm2 日志 的文章

 

随机推荐