我最近开始学习meteor,我正在开发一个类似于公交车时刻表应用程序的应用程序;我有几个屏幕(大约30个带浏览器的设备),我将它们全部连接到一个在cmd上运行我的应用程序的localhost(应用程序使用带有本地MongoDB的Windows 10离线,没有在线服务器)。每组屏幕显示相关总线及其时间表,从MongoDB集合中提取。
该应用程序过去工作得很好,但当我再添加10个屏幕时,客户端似乎在几分钟后与服务器断开连接;我有流量调用在屏幕上显示服务器时间,这次显示为 undefined 当服务器掉线而我无法通过MeteorToys看到我的任何收藏文件时,我看到了收藏品,但是文件是0.另外,我无法登录我的管理页面(这是我制作的基本用户界面,简单的MongoDB帐户集合)
值得一提的是整个应用程序都没有崩溃;我仍然可以导航到我的页面,因为我的布局,HTML和CSS仍然显示,只是我停止的服务器相关功能。
我意识到这是一个流量问题,因为当我断开所有屏幕并运行应用程序时,它运行正常。此外,当我逐个重新连接时,它似乎也可以正常工作。
我在客户端的控制台上没有出现任何错误,在服务器CMD上,应用程序没有崩溃,它一直没有出现任何错误。
另外,我每秒都将Meteor.status()ping添加到我的控制台,我得到了这个
{status: "connected", connected: true, retryCount: 0}
这意味着从技术上讲服务器没有脱机?
我很失落,我该怎么做才能纠正这个问题?
更新
我注意到我有几个每秒运行一次的ServerSession,从服务器上获取时间。我将它们改为正常的会话,我现在面临着另一个问题;我认为某处存在内存泄漏;当它冻结我注意到我的RAM使用率暴涨到8GB(我的max_old_space设置为8912因此它不应该是一个问题)正常使用时间约为600-900MB
然后我得到FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
=> Exited with code: 3
503 (Service Unavailable)
在浏览器上无法访问和服务器 然后服务器重新启动,它也会做同样的事情。帮助:(
答案 0 :(得分:1)
我在应用程序加载大量数据和进行计算时遇到了相同的行为。当nodejs服务器CPU处于加载状态时,应用程序将失去与其节点后端的连接,并且当数据库服务器CPU处于加载状态时,应用程序将失去与数据库的连接。
以下是一些建议:
meteor
命令在单个Windows机器上运行它! :首先使用meteor build
https://guide.meteor.com/build-tool.html 关于构建的编辑:构建应用程序后,您将获得一个文件夹。以下是在生产模式下启动应用程序的步骤:
cd into your meteor app folder
meteor build targetFolder --directory
cd targetFolder/bundle
(cd programs/server && npm install)
meteor node targetFolder/main.js #I use meteor node to ensure version compatibility