2012-11-26 209 views
1

場景: ASP.NET MVC的Web應用程序調用Java的web服務請求2年有價值的數據。以下是來自網絡服務的響應的大小:Web服務性能優化

Request Count: 1 
Bytes Sent:  937  (headers:396; body:541) 
Bytes Received: 689,300  (headers:338; body:688,962) 

這需要大約2分鐘的時間。這會導致ASP.NET運行速度緩慢,從而導致用戶感到沮喪。已經與Java人談過,他們已經盡了最大努力來優化其性能。

可能有人請幫助我,這將是優化Web服務調用第三方的最好方法?以下是名單的事情我做過和 已經忍不住了:

  1. 2年的數據分解到每1年ASYC通話。
  2. 已要求Java的傢伙,減少郵件大小,使有效載荷 小。

仍表現並沒有增加。

如果我創建一個異步VOID方法,只是要求有2年的數據,並填充緩存將這項工作,?主要關心的是登錄過程是否需要等待 這個VOID方法才能完成。

+1

我做了很多類似的任務,並且asp.net運行速度並不慢。也許你需要調查讓它運行緩慢的一點。是硬件上的內存問題,是鎖定其他用戶的SQL數據的某種鎖定,是另一回事嗎?還需要定義緩慢,直到任務結束才返回,是返回什麼,什麼?即使是一個錯誤的sql安裝程序也可以做到這一點,如果你改變SQL線程優先級。您是否有權訪問服務器以查看造成速度緩慢的原因? – Aristos

+0

你是否真的需要爲每個用戶提供不同的兩年數據? – dove

+1

首先,您應該監視http通道,突出顯示發送請求的時間與返回響應的第一個字節的時間。然後,測量響應轉移的持續時間(和吞吐量)。這會告訴你究竟是花費時間 –

回答

1

這類問題不容易從遠程調試,但是你應該先衡量地方開始你失去了你的大部分時間。它是否在調用處理中的Java服務?將性能計數器添加到您的代碼中,或者登錄以查看哪些地方可以提高最多。接下來,您可以使用存根交換webservice調用等部分,並查看您的性能是否更好,現在您知道必須更改性能的位置了。

+0

在Java上執行速度很慢,需要進行異步調用並將本地緩存填充爲login.but這個調用應該在後臺運行,fire和forget.it不應該是Henderson登錄進程。當用戶點擊兩年很少的頁面時。然後從本地緩存加載 –

+0

以上是可能的嗎?我不知道的是如何在asp.net中運行後臺異步調用 –

+0

是的,您可以在用戶登錄到將您的數據放入會話或緩存的網站時啓動線程。 – Peter