如何解决访问稍微一多 内存就暴涨!!
发布于 5 年前 作者 zhubenjie 2776 次浏览 来自 问答

1.jpg 平常内存是这样的。

然后测试每一秒 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)

然后变这样了。。 2.jpg

/*首页路由如下。。*/
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')
        }

    })()

})

有时候访问页面就 3.jpg 还是我的 服务器是 配置是 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 也是要有的啊,,要分页

回到顶部