2014-09-23 33 views
5

我已經構建了一個在Amazon Web Services上使用Shiny Server的測驗系統。當我在家中的一臺或兩臺設備上進行測試時,系統可以可靠運行。但是當我在10多名學生的教室裏使用它時,系統崩潰了。問題和小部件正確加載,但當學生試圖提交答案時(30-40分鐘後查看它們)數據處理不正確(結果保存在csv文件中,所以我可以看到)。閃亮的應用程序在許多同時請求不穩定

據我所知,這可能有很多原因,但我想知道是否有人可能是Shiny服務器只是沒有設計來處理許多同時發生的請求。這意味着我可以忘記將Shiny用於我的目的,並在別處尋找。對於那些有興趣誰在系統中,這裏是代碼:

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

非常感謝!

回答

3

@FvD說什麼。但是另外請記住,如果您希望其他人以可伸縮的方式託管您的應用程序,則需要shinyapps.io;如果要使用多個R進程來備份Shiny應用程序,請輸入Shiny Server Pro。 Shiny Server本身當然可以處理大量的請求(我們已經看到一個Shiny Server實例可以正常處理多達1000個併發用戶) - 而且它還有很多空間可以存在 - 但是正如@FvD所描述的那樣,這一切都取決於你的R應用程序的擴展程度。

需要注意的一點是:在像你這樣的應用程序中考慮一些複雜的問題。如果將所有數據寫入單個.csv文件,則無法同時安全地運行該應用程序的多個實例(這些進程將覆蓋彼此的文件)。相反,您可以考慮將結果寫入一堆不同的CSV文件中,這些文件可以稍後彙總在一起,或者您可以使用類似關係數據庫的東西來真正做到這一點。這個問題在here中有更詳細的描述。

3

這取決於您的應用程序和您託管的服務器的複雜程度。他們的開發者之一here有一個解釋,雖然沒有明確的指導方針。

由於您有可以測試的學生,因此您可以估算應用程序能夠正確處理的用戶數量,並使用此數字來設置對可以加入的人數的限制。如果你看看the manual,你會發現「Simple Scheduler」來做到這一點。要使用示例出手工的,如果你想連接的學生的數量限制爲5,將添加simple_scheduler給你配置:

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

既然你有超過5名學生,設置的多個副本應用程序在多個不同的位置。您可以使用load balancing idea of Huidong Tangimplementation of that idea by sjewo來擴展它。

相關問題