2014-09-11 42 views
0

我寫了一個簡單的Web服務,其中手持設備連接到服務器上的Twisted腳本。設備將數據發送到腳本,腳本使用這些數據來查詢MySQL數據庫,將數據庫內容發送回設備。劇本是根據寫在本教程中處理數百萬個連接的扭曲腳本

http://www.raywenderlich.com/3932/networking-tutorial-for-ios-how-to-create-a-socket-based-iphone-app-and-server

怎麼會這樣的腳本處理大量連接的腳本?在我的腦海中,它只受服務器限制,服務器內存越高,可以處理的連接數越高。但是腳本能夠在大量連接中表現良好嗎?對於每個連接,都會創建一個新的連接實例,並在出現查詢時爲該連接創建一個新的db實例,所以它的所有處理都是異步處理的,我相信,所以服務器cpu的功率和內存?應對高連接量是通過擴展服務器來完成的?對於我的服務,連接可能會在1到3小時之間的任何地方保持打開狀態,因此服務器內存可能會填滿服務器並導致服務器崩潰。

另外,有沒有人知道連接實例的大小是什麼?

可能更多的服務器問題比扭曲的問題!但非常感謝閱讀!

+0

我想這是更多的內核/ tcp-ip-stack問題,正如你所說 - 我懷疑Twisted強加了它自己的任何特定限制。閱讀http://stackoverflow.com/q/2332741/66349,我會建議考慮重新設計你的架構。也許UDP會更合適? – 2014-09-11 09:35:23

+0

沒有明確的理由切換到UDP是一個常見的新手錯誤。謹防! – 2014-09-11 12:14:23

回答

2

您應該執行壓力測試。您應該生成大量的連接並查看性能下降的情況。你可能沒有問題,但如果你這樣做,你應該優化處理連接的代碼,規範你的數據庫併爲你的數據庫字段建立索引。但是不需要過早的優化。

+1

很好的答案。測試是確定知道的唯一通用方法。 – 2014-09-11 12:13:42

+0

到目前爲止我覺得腳本可以處理無限連接,一旦有無限的CPU和內存。但我也在想這個腳本正在聽一個端口。這將導致大量連接的性能問題。這個瓶頸有什麼方法嗎? – ThriceGood 2014-09-11 13:07:20