解析服务器接收 i/o 失败

解析服务器接收 i/o 失败

我正在使用 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 个实例。

相关内容