好长一段时间没更新博客了,之前答应了朴灵大大,用了阿里Node性能平台 要写下体验报告的,但因为创业,一直时间不定。然后今年又是事业几何上升期。现在总算是闲下来,好好写下我用阿里Node性能平台之后,给我带来的收益。然后给新人介绍下阿里Node的基本使用。
本文主要针对阿里Node性能平台和eggjs的结合使用。发现个人开发者想用阿里Node性能平台来管理自己现有的平台,在网上还是很难找到相关文章的。
在介绍怎么使用前,先介绍下阿里Node,阿里Node在目前来说,对于大项目和一些长期运营的平台来说,还是蛮有意义的。其实阿里Node给我的感觉,更像是阿里自身使用eggjs之类的框架后,面对大规模集群,专门修改了底层的node,然后专门用来管理集群Node,现在专门开放出来给大家使用。
简单的说
监控
查bug(如:内存溢出)
如何使用eggjs+阿里Node
eggjs本身也算是阿里系的,所以对阿里Node的支持就不用说了,而且阿里Node本身也是从自用剥离出来的。
相关资料
eggjs阿里Node性能平台egg-alinodeegg-alinode使用介绍
eggjs如何使用阿里node
eggjs结合阿里node其实很简单
只要npm install egg-alinode,注册alinode插件,然后在config里面添加你的alinode专属的server、appid、secret就可以了。
如何拿到alinode的server、appid、secret
进入到阿里Node性能平台,创建应用,然后拿到相关key。
填完这些就算完了嘛?
不对不对!刚刚说过,alinode是修改过底层框架。那么,这个node其实原则上讲不是原生的Node,所以我们需要去下载对应的alinode版本,然后才能完整的使用阿里Node性能平台的全部功能。本地安装阿里Node的方法,在阿里云上有相关介绍了,这里不细讲。
第一篇文章提过使用docker来运行Node,现在我们要修改底层环境,那么只需要修改对应镜像就好了,因为node8.6以上,在对https的处理上有bug,所以特地找上朴灵大大,搞了个node8.5版本对应的alinode。
FROM registry.cn-hangzhou.aliyuncs.com/aliyun-node/alinode:3.4.0#和原来对比只修改了这行
#old: FROM node:8.5
MAINTAINER Mumudeveloper
#hardcode
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN yarn global add forever
# Create www directory
RUN mkdir -p /www
COPY ./api /www
# Install www dependencies
WORKDIR /www
RUN yarn install
EXPOSE 7001
# Define default command.
ENTRYPOINT forever start -l forever.log -a index.js && tail -f ~/.forever/forever.log
至此,提交了代码更新了docker后,你就可以在Node性能平台上看到对应的应用了。
有了监控后,我们能做什么?
上面说了,监控和查bug,监控这块就不谈了,比较泛。关键是bug(如:内存泄漏,这块真的是拯救了我),那个时候,我的项目刚起步,项目会定期的去各大资源网获取信息,然后突然有一段时间,我的内存不停的泄露,不停的重启,这个直接影响到很多的用户。
这个时候,就可以祭出阿里Node平台大杀器
在阿里Node性能平台进入到对应内存泄漏的实例
保存堆快照
进行转存和分析,然后你就能把你的程序运行的内存快照保存起来,想想保存了整个内存快照,要找出bug还不容易嘛?像我最开始,完全不懂性能平台怎么用,单是在上面乱点,就找到了熟悉的字眼(附图马赛克,ip地址)
然后,在好几个地方都能开到这个字眼,然后发现到处都是,^.^还用说,内存泄漏的地方肯定就被定位出来了,原来是请求对应的服务器报错,然后error被catch住后并没被销毁,导致占用了内存。
深入使用的,就得等我更有时间的时候来写了Orz