首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的均数服务器需要3-6分钟才能启动。

我的均数服务器需要3-6分钟才能启动。
EN

Stack Overflow用户
提问于 2015-01-30 05:04:13
回答 2查看 1.7K关注 0票数 0

我的mean.js应用程序是基于yoeman生成器的,有一些调整(例如,将前端和后端分离,以便可以单独部署)。

我正在使用图(见下面的fig.yml )启动这个应用程序。当我将命令设置为"node server.js“时,服务器需要6秒才能启动。

当我开始使用“咕噜”,它运行无恶魔和观看,它大约需要6分钟。我试过很多种东西,但不明白为什么没有恶魔会让事情跑得这么慢

fig.yml:

代码语言:javascript
复制
web:
  build: .
  links:
   - db:mongo.local
  ports:
   - "3000:3000"
  volumes:
   - .:/home/abilitie
  command: grunt
  #command: node server.js # much faster but you don't get the restart stuff
  environment: 
   NODE_ENV: development
db:
  image: dockerfile/mongodb
  ports: 
   - "27017:27017"

格伦特文件(摘录)

代码语言:javascript
复制
concurrent: {
    default: ['nodemon', 'watch'],
    old_default: ['nodemon', 'watch'],
    debug: ['nodemon:debug', 'watch', 'node-inspector'],
    options: {
        logConcurrentOutput: true,
        limit: 10
    }
},

jshint: {
    all: {
        src: watchFiles.serverJS,
        options: {
            jshintrc: true
        }
    }
},

grunt.registerTask('lint', ['jshint']);
// Default task(s).
grunt.registerTask('default', ['lint', 'concurrent:default']);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-31 17:11:59

NFS拯救了我们。

VirtualBox共享文件夹非常慢。使用这个流浪汉图像代替boot2docker要快得多。

https://vagrantcloud.com/yungsang/boxes/boot2docker

此外,确保禁用UDP,或NFS可能挂起。您可以在Vagrantfile中这样做:

config.vm.synced_folder ".", "/vagrant", type: "nfs", nfs_udp: false

票数 0
EN

Stack Overflow用户

发布于 2015-01-30 16:10:42

这是因为您的第一种方法只是通过$ node server.js运行Express服务器。但我不明白为什么我要花6秒才能开始?也许你有一个缓慢的硬件..。

为了理解第二种方法为什么需要6分钟的时间,您需要了解grunt在启动后做了什么:

  1. 所有这些JavaScript filesserverJS:'gruntfile.js','server.js','config/**/*.js‘clientJS:'public/js/*.js',’public/filesserverJS/**/*.js‘
  2. 启动两个并行进程:watchnodemon 如果watch是透明的(它监视文件,在编辑它们之后,重新启动服务器),那么nodemon是什么?更确切地说,通过nodejsnodemon启动服务器有什么区别。

来自官方github文件

nodemon将监视启动nodemon目录中的文件,如果任何文件发生更改,nodemon将自动重新启动节点应用程序。 如果您有一个应用程序的package.json文件,您可以完全省略主脚本,nodemon将读取主属性的package.json并使用该值作为应用程序。

它正在监视node_modules目录中的所有文件,而在我的平均值是0.4.0中,它的大约41 000个文件。在您的例子中,缓冲所有这些文件大约需要6分钟。尝试添加到您的gruntfile.js grunt.initConfig > nodemon > dev > ignore选项中

代码语言:javascript
复制
    nodemon: {
        dev: {
            script: 'server.js',
            options: {
                nodeArgs: ['--debug'],
                ext: 'js,html',
                watch: watchFiles.serverViews.concat(watchFiles.serverJS),
                ignore: 'node_modules/*' // or '/node_modules'
            }
        }
    },

你需要准确地确定问题出在哪里。尝试以三种不同的方式启动服务器并测量时间

  1. NODE_ENV=development nodejs server.js
  2. NODE_ENV=development nodemon server.js
  3. NODE_ENV=development nodemon server.js --ignore node_modules/
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28229539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档