Articles of 生产环境

Node.js(&MongoDB)服务器崩溃,数据库操作中途?

我有一个node.js应用程序与mongodb后端去一周生产,我对如何处理应用程序崩溃和重新启动有一些怀疑。 说我有一个简单的路线/followUser我有2个数据库操作 /followUser —–>Update User1 Document.followers = User2 —–>Update User2 Document.followers = User1 —–>Some other mongodb(via mongoose)operation 如果发生服务器崩溃(由于电源故障或远程mongodb服务器closures),会发生什么情况,如下所示: —–>Update User1 Document.followers = User2 SERVER CRASHED , FOREVER RESTARTS NODE 下面的这些操作会发生什么? 系统现在处于不一致的状态,每当我要求User2的追随者时,我可能会有错误 —–>Update User2 Document.followers = User1 —–>Some other mongodb(via mongoose)operation 另外请推荐良好的日志logging,并重新启动/监视模块的Linux应用程序运行。 现在即时使用域来捕获exception,做server.close,但在process.exit()之前,我想确保所有的数据库事务完成,我可以通过testing,如果事件循环是空的或不(如何? ),然后process.exit(1)?

如何在生产模式下从rails上运行nodejs脚本

在我的项目中,试图从rails上运行ruby的nodejs脚本。 我正在像这样在我的product_details_controller中运行: system "node /home/user1/sample.js" 在sample.js是这样做的: var jsdom = require('/usr/local/lib/node_modules/jsdom'), request = require('/usr/local/lib/node_modules/request'); var _mysql = require('/usr/local/lib/node_modules/mysql'); var MYSQL_USER = 'root'; var MYSQL_PASS = 'abc'; var DATABASE = 'example'; var mysql = _mysql.createClient({ user: MYSQL_USER, password: MYSQL_PASS, }); mysql.query('USE ' + DATABASE); mysql.query('select * from product_details', function selectCb(err, results, fields) { if (err) throw err; […]

在生产机器上部署和运行节点服务器的最佳方法?

我正在使用Webrtc,nodejs,Expressjs作为创buildaudio,video和聊天应用程序的框架。 我已经使用了Forever,以便脚本可以持续运行。 正如我的应用程序处理audio,video和聊天。 用户存在扮演着重要的angular色。 我们需要始终启动和运行系统,避免系统崩溃并重新启动。 如果发生这种情况,我们将放弃有关在线用户的所有信息。 需要build议什么是避免这种情况的最佳方法。 此外,在将新function移至生产服务器的同时,应该考虑哪些步骤,以便应用程序不会停止,从此我们不会丢失用户信息。 如果服务器出现故障或者我们不得不把它closures的话。 有什么不同的技术可以使用,以便我们不会丢失系统中在线用户的状态信息,并将其恢复(如有必要)。

在生产模式下的帆升降机不起作用

当我尝试使用sails lift –prod升降帆提升帆应用程序 – 它在production.js文件中给出错误。 说Warning: Uglification failed. Unexpected character '#'. Line 12432 in .tmp/public/concat/production.js Warning: Uglification failed. Unexpected character '#'. Line 12432 in .tmp/public/concat/production.js 我search,发现它来自我的资产的js文件 #!/usr/bin/env node 当我删除这条线,并尝试做帆升降机 – 它得到的stucks 不知道错误是什么。 谁能帮我?

如何debugging一个NodeJS阻塞的事件循环?

我们有一个运行在生产环境中的NodeJS / Express服务器,有时候所有的请求都被阻塞了。 networking请求正在接收,但没有处理(他们最终全部超时)。 几分钟后,它会再次接受请求,但几乎立即像以前一样开始阻塞。 我们一直试图在本地重现此问题,但无法重现并确定原因。 我的猜测是,事件循环被阻塞的时间太长,无法完成,或者根本不完成。 是否有任何方法来debugging现场制作系统,并找出是什么原因导致该块? 我search了,但只能find本地发展的解决scheme。 我最好的解决scheme是回顾日志,查看最后一个没有阻塞的请求(在开始阻塞之前),并debugging它? 使用Node 6.2.2,Express 4.13.4,并在Heroku上运行。

Angular 2 – 使用“npm”为生产build立“dist”,而不是“ng build -prod”

我有一个项目,我正在build设和运行npm start而不是ng serve 。 我是一个angular度2的初学者,所以我不知道如何build立这个项目的生产,以便在它的纯JavaScript / HTML / CSS的dist/文件夹。 对于ng init创build的angular度2的应用程序,如果我使用ng命令,我可以做ng build –prod工作完成时生成并创builddist文件夹。 如果我在这个项目上使用ng build –prod ,angular会提供我覆盖一些我不想覆盖的文件(app.module.ts,app.component.ts等等)。 里面有路由的东西,我不想改变它们。 如何在不使用ng build –prod命令的情况下获得该应用程序的生产版本(即ng build –prod /文件夹)? Angular-cli版本是: angular-cli: 1.0.0-beta.28.3

生产构build引发意想不到的错误

前几天我build立我的Angular 4和Spring Boot应用与npm run build和一切正常,但现在我得到了这样一个错误: ERROR in Can't resolve all parameters for DataService in C:/Users/Michał/IdeaProjects/Inventory/src/main/frontend/src/app/services/data.service.ts: (?, [object Object]). ERROR in ./src/main.ts Module not found: Error: Can't resolve './$$_gendir/app/app.module.ngfactory' in 'C:\Users\Michał\IdeaProjects\Inventory\src\main\frontend\src' @ ./src/main.ts 3:0-74 @ multi ./src/main.ts 我的data.service类看起来: @Injectable() export class DataService { constructor(private url: string, private http: HttpClient) { } getAllWithPaging(params: HttpParams){ return this.http.get(this.url + […]

在生产环境中查找nodejs中的内存泄漏

我在生产中有一个nodejs应用程序,我有一个内存泄漏(内存在3天内从600Mo增加到3Go)。 我search了一些工具来进行内存转储,但是我只发现需要在应用程序中写入转储的插件。 当然,我不能停止我的应用程序,并重新启动它(修改后)以拍摄快照,我想采取一个外部工具的节点外存储转储。 你知道这样的工具吗? 谢谢。

将Sails JS拖放到Heroku时未find图像

我开发了一个Sails.js应用程序,它在本地按预期工作。 但是,当我将其部署到生产(Heroku)时,无法find“/ assets / images /”文件夹中的图像(404)。 我知道有一些任务将“/ assets”文件夹中的文件传输到“.tmp / public”文件夹,以便在应用程序被解除时可以访问。 .js和.less文件正在按预期加载,但不是图像。 我怎样才能确保“/ assets / images”文件夹被传输到公共文件夹呢?

是否可以debugging当前正在运行的生产节点应用程序?

在本地我通过运行node –debug和使用node-inspector工具进行debugging。 节点检查器必须在后台运行,然后我指向我的浏览器(并非所有的浏览器都能正常工作; Chrome会这样),以便http://127.0.0.1:8080/debug?port=5858进行debugging。 问题是我无法在本地运行生产服务器(缺less不属于开发机器的私钥文件),因此即使我愿意在生产机器上进行攻击,也很难debugging某些生产问题。 这仍然可以与节点督察?