2016-01-04 40 views
0

我寫了一個旨在用於查看大型日誌文件的web應用程序。每個日誌文件可以大於500MB,並且每個文件包含100K行或更少的行。我使用supervisord來管理啓動8個龍捲風和nginx實例,以將請求重定向到8個龍捲風實例中的每一個實例。部署後,我注意到請求被鎖定,並且有大量的內存使用。Nginx和Tornado:發送大文件到http客戶端

我目前的實現是從文件中逐一讀取每一行並通過websocket發送它。我選擇通過websocket進行通信,因爲它允許我向用戶顯示進度。當只有一個或兩個用戶時,這很好,但是一旦有更多的用戶開始提交請求來加載文件,服務器就會陷入困境。

我希望有人可以建議我最好的方式發送大文件到客戶端瀏覽他們的Web瀏覽器,而不會阻止未來的請求。可以有30-50個用戶同時加載日誌文件。我已閱讀this解決方案,它似乎是我需要的,但我不知道這是否是最佳解決方案。

回答

0

提及Generate large file and send it恕我直言,是最好的(也許是唯一的非阻塞,不進入內部)發送大量數據的方式。

另一方面,閱讀文件可能會以完全非阻塞的方式實現,它是一個古玩,通過運行單獨的進程cat並使用PipeIOStream。當然,以這種方式閱讀並不是最好的解決方案,但在實施tail -f時它變得非常方便。

不同的方法

但我個人會使用nginx的這個任務,因爲你要爲大型文件,這一切(無尾-f)。可以在js中執行進度。有用的資源:

相關問題