CNode

egg.js 在服务器启动慢的原因是什么?

问答
Tthomas0836发布于8 年前最后回复8 年前24 回复5782 浏览0 收藏

情况是这样的,在本地开发的时候使用npm run dev (npx sequelize db:migrate && egg-bin dev) 启动都是1到3秒左右,在本地使用npm start (egg-scripts start --daemon --title=test --env prod)也是这个时间。 但是在服务器上却跑到 89+ ([egg-scripts] Wait Start: 89...)才启动到……

本地是 node/9.11.2, npm 5.6.0 服务器 node/11.2.0, npm 6.4.1

除了 node的版本问题,还会有什么问题影响

查看回复

回复 (24)

A
Ander456#1·8 年前

那先换成同样版本试试?

T
thomas0836#2·8 年前
D
Delete540#3·8 年前

服务器怎么不用LTS版本的呢?

T
thomas0836#4·8 年前
引用 Ander456那先换成同样版本试试?

@Ander456 版本越高,不应该是跑得越快吗?我还特意的 autod 一下,都把依赖全部升级了……

T
thomas0836#5·8 年前
引用 Delete540服务器怎么不用LTS版本的呢?

@Delete540 新部署的机子,都是用 n latest 来安装的 哈哈哈

C
CaanDoll#6·8 年前

和机器配置有关系吧,我在2核4G的机器上启动一般就是wait 2 ,在1核1G的机器上就是wait 12。

T
thomas0836#7·8 年前
引用 CaanDoll和机器配置有关系吧,我在2核4G的机器上启动一般就是wait 2 ,在1核1G的机器上就是wait 12。

@CaanDoll 刚都换成9.11.2,一样非常慢,刚开始的时候是wait3 左右的。就是部署了10个项目左右后,突然就这样了。 全部项目都停掉还是这样,只剩下没有重启服务器而已,无解……

X
XGHeaven#8·8 年前

好像还跟磁盘有关系吧,服务端通常要加载很多库的,小文件很多,如果磁盘读写不够的话,会比较慢的。还有就是 cpu 的性能也比较影响。

T
thomas0836#9·8 年前

刚刚重启了,稳定在 17 到 19之间,还不能恢复到之前的 3左右。

T
thomas0836#11·8 年前

查了一下 服务器的cpu 历史,在 22号前一直是占用率在 3%左右,然后突然就到了85%,然后跌下来后就一直维持到10%…… 记得当时应该是部署了一个每30秒跑一次的egg 的 定时任务,但是这个项目之后就挂掉了,启动不起来。之后就出现了其他项目启动都非常慢的问题了。然后更新了node的版本,把项目的依赖也更新,但是问题依然。 感觉应该是这个导致的,但是不知道怎么破,求指导! https://cnodejs.org/topic/5bf67536be1b120abac5bee0

'use strict';

module.exports = {
  schedule: {
    interval: '30s', // 1 分钟间隔
    type: 'all', // 指定所有的 worker 都需要执行
  },
  async task(ctx) {
    const { logger, service } = ctx;
    const { email } = service;
    await email.sendTask();

    logger.debug('email.sendTask working');
  },
};
T
thomas0836#12·8 年前
引用 CaanDoll@thomas0836 你是什么服务器

@CaanDoll 阿里云的CentOS 7.4 64位 1核2G,2M。 刚开始的时候都是跑Wait 3左右而已

T
thomas0836#13·8 年前

恢复到 Wait 5了,但是那个定时任务的项目 不敢启动……

C
CaanDoll#14·8 年前

你的服务器是不是突发性能实例,基线15%或者10%的那种?

A
atian25#15·8 年前
  1. 用 Alinode 看 CPU 数据
  2. 看 run 目录下的 timing 数据,看看是不是某些插件的 beforeStart 初始化较长,如数据库连接啥的
A
atian25#16·8 年前
引用 thomas0836@Ander456 版本越高,不应该是跑得越快吗?我还特意的 autod 一下,都把依赖全部升级了……

@thomas0836 11 这种不是 LTS 版本,会包含一些实验性的代码,反而可能会导致性能下降。

T
thomas0836#18·8 年前
引用 CaanDoll你的服务器是不是突发性能实例,基线15%或者10%的那种?

@CaanDoll 不知道呢,是新用户免费半年的那种。就是当成测试机,用来玩的

T
thomas0836#19·8 年前
引用 atian25@thomas0836 11 这种不是 LTS 版本,会包含一些实验性的代码,反而可能会导致性能下降。

@atian25 大大,弱弱的问问,定时任务这样写OK吗?type: 'all', // 指定所有的 worker 都需要执行 这里,我不知道理解有没有错。如果是双核的话,就是两个worker,那是两个worker都会独立去执行,就是说他们都有一个独立的每30s执行一次的定时任务?

'use strict';

module.exports = {
  schedule: {
    interval: '30s', // 1 分钟间隔
    type: 'all', // 指定所有的 worker 都需要执行
  },
  async task(ctx) {
    const { logger, service } = ctx;
    const { email } = service;
    await email.sendTask();

    logger.debug('email.sendTask working');
  },
};
T
thomas0836#21·8 年前
引用 atian251. 用 Alinode 看 CPU 数据 2. 看 run 目录下的 timing 数据,看看是不是某些插件的 beforeStart 初始化较长,如数据库连接啥的

@atian25 还有 Alinode 也有点问题想了解一下,他是一个appid 就只能部署到一个项目吗? 我看到里面好似可以多个实例的样子,这个实例是指多核的时候的多个worker? 还是说可以多个项目都公用一个appid,然后在实例这里就分别可以看到不同项目?

T
thomas0836#22·8 年前
引用 atian25@thomas0836 有什么问题么?

@atian25 就是部署了这个定时任务的项目后,就引发了以上的血案。这个定时任务的项目刚刚部署的时候好好的,Wait 10左右就启动了。因为这个项目还需要更新一些代码,所以几天内重启了几次,突然就启动不了。然后其他的项目也跟着启动不了。这个项目除了加了定时任务,其他都和别的项目一样的数据库操作而已,没有其他东西。

A
atian25#23·8 年前
引用 thomas0836@atian25 就是部署了这个定时任务的项目后,就引发了以上的血案。这个定时任务的项目刚刚部署的时候好好的,Wait 10左右就启动了。因为这个项目还需要更新一些代码,所以几天内重启了几次,...

@thomas0836 定时任务是在启动成功后才会开始调度的,跟启动速度无关。

alinode 的一个 appid 是一个监控项目,你代码都不同肯定不能同个 ID

参与回复
登录后即可参与回复。登录