我已经成功地在Google app engine引擎上部署了一个自定义Node.js应用程序。然而,我在启动应用程序时遇到了问题,因为猫鼬在尝试连接时超时了。令人沮丧的是,猫鼬在我的本地机器上连接得很好,参数完全相同。
我的MongoDb URI的形式如下:
mongodb://<dbuser>:<dbpassword>@xxxx.mlab.com:<portNumber>/db-name
因此,我的问题是,当试图连接到上面的URI时,我的App Engine实例和我的本地计算机之间有什么不同?我选择mlab在GCP上托管它的事实有关系吗?如果我选择将它托管在Amazon AWS上,会有什么不同吗?问题的根本原因到底是什么?
以下是我发现的类似问题,以供参考:
>
在app engine上部署时,我可以从本地主机连接到google cloud部署的mongoDB,但不能从相同的应用程序连接到mongoDB
在google app engine上部署应用程序后,无法连接到mongodb
此外,如果有帮助的话,mongodb被用作业务模型的db、应用程序的Express会话的数据存储以及存储来自Socket.io的临时数据。
部署后来自App Engine的stacktrace错误:
2017-10-18 02:13:46 default[20171017t215757] npm ERR! enoent ENOENT: no such file or directory, open '/app/package.json'
2017-10-18 02:13:46 default[20171017t215757] npm ERR! enoent ENOENT: no such file or directory, open '/app/package.json'
2017-10-18 02:13:46 default[20171017t215757] npm ERR! enoent This is most likely not a problem with npm itself
2017-10-18 02:13:46 default[20171017t215757] npm ERR! enoent and is related to npm not being able to find a file.
2017-10-18 02:13:46 default[20171017t215757] npm ERR! enoent
2017-10-18 02:13:46 default[20171017t215757]
2017-10-18 02:13:46 default[20171017t215757] npm ERR! Please include the following file with any support request:
2017-10-18 02:13:46 default[20171017t215757] npm ERR! /app/npm-debug.log
2017-10-18 02:23:41 default[20171017t215757] npm ERR! Linux 3.16.0-4-amd64
2017-10-18 02:23:41 default[20171017t215757] npm ERR! argv "/nodejs/bin/node" "/nodejs/bin/npm" "start"
2017-10-18 02:23:41 default[20171017t215757] npm ERR! node v6.11.3
2017-10-18 02:23:41 default[20171017t215757] npm ERR! npm v3.10.10
2017-10-18 02:23:41 default[20171017t215757] npm ERR! path /app/package.json
2017-10-18 02:23:41 default[20171017t215757] npm ERR! code ENOENT
2017-10-18 02:23:41 default[20171017t215757] npm ERR! errno -2
2017-10-18 02:23:41 default[20171017t215757] npm ERR! syscall open
/home/myuser/src/project-id/teammate-express-server/node_modules/mongodb/lib/mongo_client.js:421
throw err
^
MongoError: failed to connect to server [ds147454.mlab.com:47454] on first connect [MongoError: connection 1 to ds147454.mlab.com:47454 timed out]
at Pool.<anonymous> (/home/myuser/src/project-id/teammate-express-server/node_modules/mongodb-core/lib/topologies/server.js:336:35)
at emitOne (events.js:96:13)
at Pool.emit (events.js:188:7)
at Connection.<anonymous> (/home/myuser/src/project-id/teammate-express-server/node_modules/mongodb-core/lib/connection/pool.js:280:12)
at Connection.g (events.js:292:16)
at emitTwo (events.js:106:13)
at Connection.emit (events.js:191:7)
at Socket.<anonymous> (/home/myuser/src/project-id/teammate-express-server/node_modules/mongodb-core/lib/connection/connection.js:197:10)
at Socket.g (events.js:292:16)
at emitNone (events.js:86:13)
at Socket.emit (events.js:185:7)
at Socket._onTimeout (net.js:338:8)
at ontimeout (timers.js:386:14)
at tryOnTimeout (timers.js:250:5)
at Timer.listOnTimeout (timers.js:214:5)
Google App Engine是一个完全管理的平台。从某种意义上说,它是无服务器的,您正在利用一个员工池来向上/向下扩展您的应用程序。当一个请求进入您的应用程序时,池中的一个实例将处理该任务/请求。
您可能还会发现Google App Engine常见问题很有用。
我选择mlab在GCP上托管它的事实有关系吗?
不是很多。正如您所提到的,您目前正在使用GCP进行沙箱(免费)计划。目前,这将在US-Central1
区域部署MongoDB实例,并且没有其他区域选择。不同云计算提供商之间的RAM/存储/价格也略有差异。
问题的根本原因到底是什么?
如果没有正确的堆栈跟踪或描述超时问题的错误日志,很难确定问题是什么。
通常node.js
项目包含一个名为config.js
的JavaScript文件,它有下面一行:
nconf.argv()
.env()
.file({ file: path.join(__dirname, 'config.json') })
.defaults()
它基本上试图按照以下顺序读取配置:
另见谷歌云平台:NodeJS-入门
另以GoogleLoudPlatform/nodejs-docs-samples/AppEngine/MongoDB项目为例。
问题内容: 我观察到有两种方法可以在多个表上实现目标。结果集中的一列将被更新,并且可能需要速度。结果集可以通过以下方式获得: 情况1: 或者 情况2: 两者给出的结果相同,只是连接条件有所不同。哪个运行/执行速度更快? eval_id为,report_type和course_name为。 对于所使用的开发人员,情况1具有以下统计信息:[SELECT-3077行,0.048秒]提取了结果集…执行了1
我是相当新的和。我使用的是Mac OS Sierra预装的Apache和PHP副本。我已经下载并配置了(工作完全正常,能够使用等等)。但是,我一直在努力从连接到数据库。我有这个代码: 我已将其保存为文件,但当我尝试从浏览器打开文件时,不断出现此错误: 警告:mysqli_connect():(HY000/2002):第6行 /Users/Mahfouz/Sites/connect_prac.php
在一个简单的客户端-服务器TCP套接字中,当我试图在Android Studio中创建客户端套接字时,遇到了一个问题。导致错误的指令是<code>Sockets=new Socket(主机名,端口) 我使用的端口是 1993,我尝试了变量的一些值: 在每种情况下,应用程序都会因为这个错误而停止,下面的错误属于第一点,其他的得到类似的错误。 Eclipse中的相同指令工作,我在命令行上使用服务器“n
我正在尝试将一个基于PHP的API从共享主机移植到Google应用程序引擎。我下载了PHPSDK,在启动器中创建了一个新的应用程序,在PHP中启用了cURL。ini(使用),现在我得到这个错误: 如果我向curl_init()添加反斜杠(告诉它不要使用MyNamespace),我会得到这个: 除了启用cURL_lite()(稍后我可能会解决这个问题,因为它不支持我需要的cURL选项),我如何解决这
用法同WebSocket 服务器 - 会话数据
imi 中 WebSocket 服务中使用 Imi\ConnectContext 类对连接的会话数据进行管理。在整个连接的生命周期中都有效。 使用 use Imi\ConnectContext; // 取值 echo ConnectContext::get('name'); echo ConnectContext::get('name', 'default value'); // 赋值 Con