2010-03-20 138 views
0

我們的客戶端 - 服務器產品具有它們之間的協議,作爲基於HTTP的XML。在這裏,客戶端向Web服務器請求GET/POST查詢,服務器用XML響應。服務器使用django編寫。服務器必須在網絡上,因爲全世界有很多客戶使用它。增加webservice的速度 - howto

服務器代碼使用廣泛的記憶化也有非常少的數據庫查詢 - 大多數查詢不要有任何的數據庫查詢,他們中的一些有最高1

最大的問題就是速度。每個查詢需要接近5秒才能回覆。回覆的數據也非常少 - 在4-6 Kb的範圍內。

什麼是提高Web服務速度的機制?這是編寫客戶端服務器的常用方式嗎?還有其他技術,我們錯過了嗎?

謝謝 ķ

編輯:我忘了提一兩件事 - 我們是在雲中運行它。我發現的另一件事是,在一個好的網絡中,這個速度非常快 - 大約1-2秒,那麼建立TCP會話需要花費時間嗎?

回答

1

我與tomfanning,這聽起來像延遲問題(假設你正在以一種理智的方式服務django應用程序並且服務器不會被加載太多)。

我會將ping添加到要嘗試的事項列表中,並檢查您的基線網絡延遲。當您從服務器機器本身查詢服務時,還要檢查速度,以確保它是網絡延遲。

如果不是網絡,您可以在cProfile(python -m cProfile start_the_server.py)下運行django開發服務器,運行一些查詢,然後按Ctrl-C以獲取逐個函數的分析信息。

最後一個想法是,python中的XML序列化的一些常見選擇可能非常慢。使用lxml。儘管如此,這不應該解釋5到6k的響應時間。

1

一個好的第一步是確定你的延遲來自哪裏。

嘗試使用類似Wireshark的工具來查看網絡上HTTP流量的時間點,作爲第一步。

+0

這裏的一個問題是我們正在雲中運行它。所以,我沒有足夠的權限。我發現的另一件事是,在一個好的網絡中,這個速度非常快 - 大約1-2秒,那麼建立TCP會話需要花費時間嗎? – Koran 2010-03-21 13:26:52

+0

基於雲的服務器上的CPU/IO /帶寬爭用? – tomfanning 2010-03-23 17:57:59

0

這是基於我對基於sql和c#的web服務的經驗。對django不太確定。 這些表演的主要罪魁禍首將是數據庫檢索part.Try隔離db查詢來檢查性能