Я использую сервер синтаксического анализа в качестве BAAS для своего приложения для Android. Все работает как шарм, кроме случаев, когда я использую приложение как один пользователь интенсивно И. если я отправлю несколько запросов за очень небольшой промежуток времени (много раз быстро обновляя данные) с моего клиента Android на сервер синтаксического анализа, сервер зависнет. и я получаю сообщение от моей облачной функции: «Ошибка ввода-вывода».
Я не получаю никакой информации в моем файле parse.logs, связанной с проблемой, кроме сообщения «Ошибка ввода-вывода» на стороне клиента. Я был бы более чем счастлив понять причину этой проблемы. и я как это разрешить.
Настройка среды
Сервер
версия parse-server: 1.17.3
Операционная система: Ubuntu (образ Bitnami)
удаленный сервер? AWS
База данных
Версия MongoDB: v3.0.9
Localhost
Есть несколько вещей, на которые вам стоит обратить внимание.
1) Вы, вероятно, используете как экземпляр t2.micro. Они подходят для разработки / прототипирования, но не для производства. Вся серия t, правда. Найдите хотя бы универсальную. Хотя, в зависимости от вашего варианта использования, другие могут быть лучше.
2) Оптимизируйте свои запросы. При обновлении в приложении отмените открытые запросы, вместо того, чтобы позволять им завершаться напрасно. попробуйте связать то, что вы можете. Выполняйте действия последовательно, а не параллельно, чтобы минимизировать количество одновременных открытых подключений.
3) Убедитесь, что вы правильно индексируете свою базу данных. parse-server не создает индексы автоматически, поэтому выполнение нескольких запросов может серьезно повредить вашу базу данных, увеличить время получения данных, что приведет к резервному копированию всего сервера. Если вы используете mlab для своей базы данных, откройте их консоль и перейдите на вкладку медленных запросов для кластера. cmd / ctrl + f - "построить индекс" и построить каждый из них.
Если честно, №1 - проблема масштабирования. Если у вас нет большой базы пользователей, вы сможете обойтись 2 и 3. Похоже, вы делаете это очень плохо, и ваше приложение пытается сделать слишком много за один раз, чего не должно быть. и делает то, что делает неэффективно. Мы использовали t2.micro для нашего сервера более года без проблем, хотя это было минимум 2 экземпляра в приложении EB с автоматическим масштабированием.