我正在使用 parse server 作为我的 android 应用的 BAAS。一切都运行良好,除了当我使用该应用时作为单个用户强烈的 IE 如果我在很短的时间内从我的 android 客户端向解析服务器发送几个请求(快速刷新数据多次),服务器就会冻结。我从我的云功能收到一条消息说:“i/o 失败”。
除了客户端的“i/o 失败”消息之外,我没有在 parse.logs 文件中得到与该问题相关的任何信息,我很高兴了解该问题的原因。以及如何解决它。
环境设置
服务器
解析服务器版本:1.17.3
操作系统:Ubuntu(Bitnami 镜像)
远程服务器?AWS
数据库
MongoDB 版本:v3.0.9
本地主机
答案1
有几件事你可能想看看。
1) 您可能正在使用类似 t2.micro 的实例。这些实例适合开发/原型设计,但不适合生产。实际上,整个 t 系列都适合。至少找到通用的那个。不过,根据您的用例,其他的可能更好。
2)优化您的请求。当您刷新应用程序时,取消打开的请求,而不是让它们毫无意义地完成。尽量捆绑您能捆绑的东西。以串联方式而不是并行方式执行操作,以尽量减少并发打开的连接
3) 确保正确索引数据库。parse-server 不会自动创建索引,因此执行大量查询可能会严重损坏数据库,使获取数据的时间更长,从而导致整个服务器备份。如果您的数据库使用 mlab,请打开其控制台并转到集群的慢速查询选项卡。cmd/ctrl + f - “建立索引”,然后建立每一个索引。
老实说,#1 是扩展问题。除非您拥有庞大的用户群,否则您应该能够使用 2 和 3。听起来您做得真的很差,并且您的应用程序试图同时执行太多不该执行的操作,并且效率低下。我们在服务器上使用了 t2.micro 超过一年,没有出现问题,尽管那是在具有自动扩展功能的 EB 应用程序上至少有 2 个实例。