2014-09-23 10 views
5

Zbudowałem system quizowy wykorzystujący Błyszczący Serwer w Amazon Web Services. System działa niezawodnie, gdy testowałem go na jednym lub dwóch urządzeniach w domu. Jednak gdy użyłem go w klasie z więcej niż 10 studentami, system się zepsuł. Pytania i widżety zostały załadowane poprawnie, ale kiedy uczniowie próbowali przesłać swoje odpowiedzi (po 30 - 40 minutach przyglądając się im) dane nie były obsługiwane poprawnie (wyniki są zapisywane w pliku csv, więc mogłem to zobaczyć).Błyskawiczna aplikacja niestabilna przy wielu jednoczesnych żądaniach.

Rozumiem, że może być wiele przyczyn, ale chciałbym się dowiedzieć, czy nie jest tak, że serwer Shiny nie jest przeznaczony do obsługi wielu równoczesnych żądań. Oznaczałoby to, że mogę po prostu zapomnieć o użyciu Błyszczących do moich celów i szukać gdzie indziej. Dla tych, którzy są zainteresowani w systemie, oto kod:

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

Dziękujemy!

Odpowiedz

3

Co powiedział @FvD. Ale dodatkowo pamiętaj, że istnieje shinyapps.io, jeśli chcesz, aby ktoś inny hostował Twoją aplikację w skalowalny sposób, lub Shiny Server Pro, jeśli chcesz złożyć aplikację Shiny z wieloma procesami R.

Serwer Shiny z pewnością poradzi sobie z wieloma żądaniami (widzieliśmy pojedynczą instancję serwera Shiny Server z gracją obsługującą do tysiąca jednoczesnych użytkowników) - i miał dużo miejsca na więcej - ale jak opisał @FvD, wszystko sprowadza się do tego, jak dobrze skaluje się aplikacja R.

Jedna uwaga: w aplikacji takiej jak Twoja jest trochę złożoności. Jeśli zapiszesz wszystkie swoje dane do jednego pliku .csv, nie będziesz mógł bezpiecznie uruchamiać jednocześnie wielu wystąpień aplikacji (procesy będą nadpisywać nawzajem swoje pliki). Zamiast tego możesz rozważyć zapisanie wyników w kilku odrębnych plikach CSV, które mogą być później agregowane lub możesz użyć czegoś podobnego do relacyjnej bazy danych, aby naprawdę to zrobić. Ten problem jest opisany bardziej szczegółowo here.

3

To zależy od złożoności Twojej aplikacji i serwera, na którym go masz. Istnieje wyjaśnienie jednego z ich programistów here, chociaż nie ma jasnych wytycznych.

Ponieważ masz uczniów, których możesz testować, możesz uzyskać szacunkową liczbę użytkowników, z którymi aplikacja będzie mogła prawidłowo korzystać, i użyć tego numeru, aby ustawić limit liczby osób, które mogą dołączyć . Jeśli spojrzysz na the manual, znajdziesz "Prosty Scheduler", aby to zrobić. Aby użyć przykładu z podręcznika, jeśli chcesz ograniczyć liczbę podłączonych studentów do 5, byś dodać simple_scheduler do ciebie konfiguracji:

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

Skoro masz więcej niż 5 studentów, zestaw wielu kopii aplikacja pod wieloma różnymi lokalizacjami. Możesz przedłużyć to za pomocą load balancing idea of Huidong Tang lub implementation of that idea by sjewo.