2014-09-23 2 views
5

Я построил систему викторины с использованием Shiny Server на веб-сервисах Amazon. Система работает надежно, когда я тестировал ее на одном или двух устройствах дома. Однако, когда я использовал его в классе с более чем 10 учениками, система сломалась. Вопросы и виджеты загружены правильно, но когда ученики пытались отправить ответы (после 30-40 минут, глядя на них), данные обрабатывались неправильно (результаты сохраняются в файле csv, чтобы я мог это видеть).Блестящее приложение нестабильно при многих одновременных запросах

Я понимаю, что для этого может быть много причин, но я хотел бы знать, может ли быть так, что сервер Shiny просто не предназначен для обработки множества одновременных запросов. Это означало бы, что я могу просто забыть об использовании Shiny для моих целей и посмотреть в другом месте. Для тех, кто заинтересован в системе, вот код:

https://github.com/witusj/CFA-2/tree/master/WK4

Большое спасибо!

ответ

3

Что сказал @FvD. Но, кроме того, имейте в виду, что есть shinyapps.io, если вы хотите, чтобы кто-то еще мог разместить ваше приложение масштабируемым способом, или Shiny Server Pro, если вы хотите вернуть блестящее приложение с несколькими процессами R.

Сам Блестящий сервер может обрабатывать множество запросов (мы видели, что один экземпляр Shiny Server изящно обрабатывает до тысячи одновременных пользователей) - и у него было достаточно места для большего, но, как описано в @FvD, все сводится к тому, насколько хорошо ваше приложение R масштабируется.

Остерегайтесь здесь: в приложении, таком как ваше, есть немного сложности. Если вы записываете все свои данные в один. CSV-файл, вы не можете безопасно запускать несколько экземпляров приложения одновременно (процессы будут переписывать файл друг друга). Вместо этого вы можете подумать о том, чтобы вывести результаты в кучу различных CSV-файлов, которые позже могут быть объединены или вы можете использовать что-то вроде реляционной базы данных, чтобы действительно сделать это правильно. Эта проблема описана более подробно here.

3

Это зависит от сложности вашего приложения и сервера, на котором вы его размещаете. Существует объяснение одного из их разработчиков here, хотя нет четких указаний.

Поскольку у вас есть учащиеся, на которых вы можете протестировать, вы можете оценить, сколько пользователей приложение сможет правильно обрабатывать, и использовать этот номер, чтобы установить ограничение на количество людей, которые могут присоединиться , Если вы посмотрите на the manual, вы найдете «Простой планировщик» для этого. Чтобы использовать пример из руководства, если вы хотите ограничить количество подключенных студентов до 5, вы бы добавить simple_scheduler к вам конфигурации:

location/{ 
    # Define the scheduler to use for this location 
    simple_scheduler 5; 
    ... 
} 

Поскольку у вас есть более чем 5 студентов, установить множественные копии приложения в разных местах. Вы можете расширить это использование с помощью load balancing idea of Huidong Tang или implementation of that idea by sjewo.

Смежные вопросы