博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于阿里的Node全栈之路(八)Nodejs性能监控和优化
阅读量:6195 次
发布时间:2019-06-21

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

好长一段时间没更新博客了,之前答应了朴灵大大,用了 要写下体验报告的,但因为创业,一直时间不定。然后今年又是事业几何上升期。

现在总算是闲下来,好好写下我用之后,给我带来的收益。然后给新人介绍下阿里Node的基本使用。

本文主要针对和的结合使用。发现个人开发者想用来管理自己现有的平台,在网上还是很难找到相关文章的。

阿里Node性能平台简介

在介绍怎么使用前,先介绍下阿里Node,阿里Node在目前来说,对于大项目和一些长期运营的平台来说,还是蛮有意义的。其实阿里Node给我的感觉,更像是阿里自身使用eggjs之类的框架后,面对大规模集群,专门修改了底层的node,然后专门用来管理集群Node,现在专门开放出来给大家使用。

那么我们为什么要用阿里Node性能平台呢?

简单的说

  1. 监控
  2. 查bug(如:内存溢出)

如何使用eggjs+阿里Node

eggjs本身也算是阿里系的,所以对阿里Node的支持就不用说了,而且阿里Node本身也是从自用剥离出来的。

相关资料

eggjs如何使用阿里node

eggjs结合阿里node其实很简单

只要npm install egg-alinode,注册alinode插件,然后在config里面添加你的alinode专属的server、appid、secret就可以了。
image
image

如何拿到alinode的server、appid、secret

进入到,创建应用,然后拿到相关key。

image

填完这些就算完了嘛?

不对不对!刚刚说过,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.5MAINTAINER Mumudeveloper#hardcodeRUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeRUN yarn global add forever# Create www directoryRUN mkdir -p /wwwCOPY ./api /www# Install www dependenciesWORKDIR /wwwRUN yarn installEXPOSE 7001# Define default command.  ENTRYPOINT forever start  -l forever.log -a index.js && tail -f ~/.forever/forever.log

至此,提交了代码更新了docker后,你就可以在Node性能平台上看到对应的应用了。

有了监控后,我们能做什么?

上面说了,监控和查bug,监控这块就不谈了,比较泛。关键是bug(如:内存泄漏,这块真的是拯救了我),那个时候,我的项目刚起步,项目会定期的去各大资源网获取信息,然后突然有一段时间,我的内存不停的泄露,不停的重启,这个直接影响到很多的用户。

image
这个时候,就可以祭出阿里Node平台大杀器
在阿里Node性能平台进入到对应内存泄漏的实例
image
保存堆快照
image
进行转存和分析,然后你就能把你的程序运行的内存快照保存起来,想想保存了整个内存快照,要找出bug还不容易嘛?像我最开始,完全不懂性能平台怎么用,单是在上面乱点,就找到了熟悉的字眼(附图马赛克,ip地址)
image
然后,在好几个地方都能开到这个字眼,然后发现到处都是,^.^还用说,内存泄漏的地方肯定就被定位出来了,原来是请求对应的服务器报错,然后error被catch住后并没被销毁,导致占用了内存。

深入使用的,就得等我更有时间的时候来写了Orz

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

你可能感兴趣的文章
【Spark】Spark的Standalone模式安装部署
查看>>
Effective C++ 条款45
查看>>
On Memory Leaks in Java and in Android.
查看>>
用TextPaint来绘制文字
查看>>
iOS--多线程
查看>>
ActiveMQ基本介绍
查看>>
Protocol buffers--python 实践(一) 简介以及安装与使用
查看>>
Android图片加载神器之Fresco,基于各种使用场景的讲解
查看>>
Linux管道那些事
查看>>
setOnFocusChangeListener的使用
查看>>
mysql left join,right join,inner join的区别
查看>>
sql server 老外博客
查看>>
<html>
查看>>
Java数据结构和算法(四)——栈
查看>>
读《人类简史》 | 一本很值得读的书
查看>>
验证 Swarm 数据持久性 - 每天5分钟玩转 Docker 容器技术(104)
查看>>
java配置好jdk-bash: /usr/bin/java: No such file or directory
查看>>
osg做的路面项目
查看>>
java.lang.NumberFormatException: For input string: "${jdbc.maxActive}"
查看>>
Linux下Shell的复制粘贴快捷键
查看>>