如何解决访问稍微一多 内存就暴涨!!
平常内存是这样的。
然后测试每一秒 100个人请求首页
const request = require('request');
setInterval(() => {
for (let i = 0; i < 100; i++) {
request('http://我的网址首页.com', (err, res, body) => {
if (!err && res.statusCode == 200) {
console.log(1)
} else {
console.log(‘n’)
}
})
}
}, 1000)
然后变这样了。。
/*首页路由如下。。*/
route.get('/', (req, res) => {
let pageInfo = req.query
let searchW = { category: 'article' }
let seo_title = pageInfo.search ? pageInfo.search + "_" : '';
let seo_tag = pageInfo.tag ? pageInfo.tag + "_" : '';
pageInfo.page = pageInfo.page && parseInt(pageInfo.page) >= 1 && parseInt(pageInfo.page) <= 200 ? pageInfo.page : 1
let seo_page = pageInfo.page > 1 ? `第${pageInfo.page}页_` : '';
let shownum = pageInfo.shownum && pageInfo.shownum < 50 ? parseInt(pageInfo.shownum) : 30;
if (pageInfo.search) {
searchW.title = new RegExp(`.*${pageInfo.search}.*`, 'i')
}
if (pageInfo.tag) {
searchW.tags = new RegExp(pageInfo.tag, 'i')
};
(async() => {
try {
let [count, article] = await Promise.all([
db.articleModel.count(searchW).exec(),
db.articleModel.find(searchW, { content: 0 })
.skip(pageInfo.page * shownum - shownum)
.limit(shownum).sort({ recommend: -1, _id: -1 })
.exec()
])
let allPage = Math.ceil(count / shownum)
res.render('index', {
data: article,
page: allPage,
headInfo: {
title: seo_tag + seo_page + config_seo.index.title,
keywords: config_seo.index.keywords,
description: config_seo.index.description
}
})
} catch (e) {
res.render('err')
}
})()
})
有时候访问页面就 还是我的 服务器是 配置是 CPU: 1核 内存:1 GB (I/O优化) 1Mbps
7 回复
接入 Node.js 性能平台 打个 snapshot 就知道为啥了,接入文档
还有,53M 到 107M 不算是暴涨吧,你要是持续访问到 600M,700M 甚至 OOM 掉那才是真的有问题。。。
这种增长是正常的。又要马儿不吃草,又要马跑。你觉得正常吗。
你可以尝试将应用接入到阿里云的 Node.js 性能平台,这样可以更详细的监控到应用的性能细节。
嗯,我尝试接入 看下
100QPS?我感觉挺高的了,机器配置太低,mongo也是在同一台机器吗?而且还有模糊查询,skip操作。。。
1、这种测试方式是不准确的,请求并不是在 1s 内平均发送出去,实际上可能几百 ms 内产生了所有请求,可以试下 apache-ab 2、如果内存在请求连续下持续保持 100MB 上下,没有请求时下降至正常状态,那么可以认为正常的
可以优化下,把 blog 里的 article 给缓存起来
@liuqipeng417 嗯, 没有请求时 下降到了正常水平
@qiu363 模糊查询 skip 也是要有的啊,,要分页