以前只是日活几十万,现在针对node日活1000万,该如何优化
发布于 6 年前 作者 dixiaoping 6146 次浏览 来自 问答

首先我使用的的request请求接口,服务端接口拉去数据, 使用express框架 使用的log4.js打印日志 使用的pug模板渲染页面,但是不知道还需要做什么性能调优吗,本地压力测试并发可以扛过去,但是不知道线上怎么样 需要做多线程处理, 还有那些需要注意的地方

39 回复

日活千万,没那么可怕,算一下峰值qps,堆机器足够了。pug模板渲染略慢,后面拆出去,做前后端分离,适当的加点缓存就足够了

堆机器,减少数据库操作

对于不经常变动的数据加缓存,用nginx做负载均衡

@zengming00 谢谢,目前有两台机器,我不需要查数据的,所有接口都服务端写好了,我只是请求接口,拉去数据,自己渲染页面

@CodeofGame 谢谢,上边狼叔说pug模板有点慢,我以前使用的是art-template,现在打算换过来,请问还有其他模板可以推荐吗?或者ejs,只是看到github上边star不是很多,所以不敢立刻使用

慢是相对的,纯api和模版渲染差别太大,是这个意思

@i5ting 我一直以为是如果随着用户量增加,渲染页面速度会变慢,了解,谢谢

Node.js模板精选 可以参考一下。 pug确实性能上会稍慢一些,主要是跟html差异太大。最初由于express推荐使用过一阵子那时候叫jade,由于跟html差异太大,最后还是放弃了,现在基本都用handlebars和ejs。这些都可以放心使用,没问题的。

附一张模板npm下载曲线对比图,以供参考 node-templates.png 链接:https://awehunt.com/npmdownloads?ids=pug,handlebars,marko,nunjucks,ejs

来自✨ Node.js开源项目精选

@vendar 收到,感谢

@dixiaoping 我也推荐使用ejs,而且ejs有模板缓存功能

@CodeofGame ok,特别感谢大家的支持

日活1000万个独立IP?

如果偷懒可以使用pug官网推荐的基于redis做缓存页面这样render会快一点-.- From Noder

模板发展到今天,性能这块其实问题不大的。

推荐用 nunjucks,毕竟是大厂的,虽然也更新毕竟慢了。 但比起 ejs 那种残废品还是好不少的。

千万日活,基本只粘接口做模板渲染的话应该没啥大问题,但是出于稳定性和后期容易拓展的考虑,负载均衡之类的可能需要先搞一搞?

@aojiaotage 想要找一下好一点的包,怕自己写有问题

@dixiaoping 你指的是负载均衡?还是模板引擎?模板引擎大佬们说了很好了,负载均衡的话,应该是用nginx或者云服务就好了吧。

@aojiaotage 我想说的是要不要启动多进程,就是使用 Node.js 自带的 cluster 模块,把cpu内核充分利用起来呢?

@dixiaoping 那还是要的,可以考虑用pm2

1、负载均衡 2、缓存 3、读写分离 4、pug换一下 aaa.png

art-template高性能模板引擎的使地址

完结

@koa666 第一次就是使用的这个,最后改回来了,随着用户访问量变得庞大,网站速度会变慢,代码中只用了express模块和art-template,所以就换掉了

@aojiaotage 好的,我试试,谢谢

能问一下你日活几十万的服务器配置么,了解了解 谢谢

@xumjs8623 日活几十万最差的机器也可以吧,我两台8核8G都能顶上千万

@zengming00 哦哦,那我再问一下带宽呢 图片啥的都放阿里oss上面,就纯代码

先要知道自己的瓶颈在哪里,才能对症下药地进行优化。

https://www.aliyun.com/product/nodejs 利器不要错过。

用request http ?请教请求性能怎么样呢?

来自酷炫的 CNodeMD

@dpc761218914 image.png这是用PM2监控的 目前还好

峰值QPS不会很高,一般问题都不大

@dixiaoping 谢谢回复,请问这张pm2的图各项指标怎么看呢? Nodes(6.953-39.496)是请求平均响应时间吗?还有https、documents和pmx,pm2性能监控还有界面吗?我用pm2部署好像是在dos界面下
另外请教一下,你的node是通过http请求去和后端交互吧?基本日均请求数和秒请求数峰值怎么样呢? 关于负载均衡方面有做什么处理吗?

@dpc761218914 我都是去取接口的,不操作数据库的,负载均衡都是运维做的,基本PM2内存和cpu波动趋于稳定状态是还好,你说的那个时间我还不确定正在看呢,监控你需要在PM2官网上注册一个账号,和你本地的项目或则,线上的关联一下就好,有免费和付费的,我用的是免费的

@dixiaoping 因为你标题有提到日活几十万,现在针对node日活1000万,所以应该是性能还不错咯? 所以你node端就是通过http从后台接口取数据、然后转发数据或者渲染页面是吗? 其他还会涉及到在node端处理的吗?日志、缓存、权限认证等等?

@dpc761218914 我这边只是涉及到http后台拉去数据,渲染页面,其他就没有了,日志只是记录access 以及error,目前压力测试了,还是不行,所以在考虑服务端不渲染页面了,只是返回json数据,让客户端自己去渲染

@dixiaoping 好吧,你并发量设置为多少呢?我原本就是准备用node 做接口,只传json 数据给前端呢

来自酷炫的 CNodeMD

@dpc761218914 目前是压力测试阶段,后续推广一天大概pv,1000万,想请问一下你打算前端渲染用什么框架,angular还是其他。。。

@dixiaoping 1000万? wow ~好大呀,厉害了,为node提供http服务接口的需要你自己开发吗?准备前端用vue 呢~

来自酷炫的 CNodeMD

@dpc761218914 不用自己开发啊,直接用第三方包就好啊。我用的request github上star很多,目前不知道,就是怕扛不住

@dixiaoping 不不不,我是问的是你的node请求的服务需要开发自己开发吗?java…还是php ?

来自酷炫的 CNodeMD

回到顶部