none
[VB2005]關於呼叫WebService時的效能.. RRS feed

  • 問題

  •  

    請問一下各位:

    當我在主機上建立一個Web Service,裡面只有預設的 HelloWorld() 這 Function

    另外在 Client 端以 VB2005 建立一個 Windows Form 來呼叫 HelloWorld() 這 Function

    目前主機上並無其他的功能

    然而在呼叫時都需要花費很久的時間(目前測試平均約12秒~14秒)

    請問有什麼地方需要注意到,或是有什麼可以追蹤效能的方法呢?

    謝謝各位的幫忙

     

    主機的規格:

    CPU:Intel Xeon 3040@1.86GHz

    RAM:2G

    OS:Windows2003 R2 + SP2

     

    Client 的規格:

    CPU:Intel Celeron 2.8GHz

    RAM:1G

    OS:Windows2000 Professional + SP4

     

    主機上的程式:

    Code Snippet

    Imports System.Web.Services
    Imports System.Web.Services.Protocols
    Imports System.ComponentModel

     

    <System.Web.Services.WebService(Namespace:="http://localhost/")> _
    <System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
    <ToolboxItem(False)> _
    Public Class Service1
        Inherits System.Web.Services.WebService

        <WebMethod()> _
        Public Function HelloWorld() As String
            Return "Hello World"
        End Function

    End Class

     

     

    Client 的程式

    Code Snippet

    Dim WS As New HelloWorld.Service1
    Dim str As String = WS.HelloWorld   '--> 慢在這行
    WS.Dispose()

     

    2008年2月17日 下午 04:04

解答

  • Web Service 本來就是另一種型式的網頁。

     

    所以你可以先用 IE 去連那個網址,若是 IE 連的時間差不多,就是網路環境與伺服器的問題,請提供更多的資訊以利參考,例如:

    1. Server 端的 ASP.NET 版本?1.x 的初始啟動太慢,最好升級到 2.0 以後。

    2. Client 端是否有安裝 IPX/SPX/NetBIOS 通訊協定?若安裝的話,有一個設計行為會影響初始連線所需時間,可參考:

    奇怪的網路衝突-.Net 2.0 TcpClient.Connect 連線建立所需時間為 .Net 1.1 50 倍

     

    2008年2月18日 上午 02:19
    版主

所有回覆

  • Web Service 本來就是另一種型式的網頁。

     

    所以你可以先用 IE 去連那個網址,若是 IE 連的時間差不多,就是網路環境與伺服器的問題,請提供更多的資訊以利參考,例如:

    1. Server 端的 ASP.NET 版本?1.x 的初始啟動太慢,最好升級到 2.0 以後。

    2. Client 端是否有安裝 IPX/SPX/NetBIOS 通訊協定?若安裝的話,有一個設計行為會影響初始連線所需時間,可參考:

    奇怪的網路衝突-.Net 2.0 TcpClient.Connect 連線建立所需時間為 .Net 1.1 50 倍

     

    2008年2月18日 上午 02:19
    版主
  • 感謝璉璉兄的幫忙

    1. 目前 Server 端 ASP.Net 使用版本為 2.0 SP1 (2.0.50727.42),不過亦有安裝.Net Framework 1.1 SP3

    2. Client 並無安裝 IPX/SPX/NetBIOS 通訊協定 (Server 端亦無安裝)

    3. 以IE直接連結到該網頁的話,通常在1秒鐘左右就可以顯示

     

    再次感謝璉璉兄的幫忙!
    2008年2月18日 上午 05:59
  • Hi Quli,

     

    我的建議是在2台電腦上收集network monitor, 這樣較容易確認是網路的問題還是系統的問題。

    以下是收集Network Monitor的步驟:

     

    1. install Microsoft Network Monitor 3.1. please download the install image from http://www.microsoft.com/downloads/details.aspx?FamilyID=18b1d59d-f4d8-4213-8d17-2f6dde7d7aac&displaylang=en.
    2. run the network monitor.
    3. click "create a new capture tab" button on the left panel

     

    至於收集後的封包分析,建議您可以搭配Ethereal 這個工具:

     

    http://www.ethereal.com/

     

    從用戶端的封包,檢視SOAP request的封包是什麼時候發出去的,從web server的封包檢視,何時收到SOAP的request封包,何時發送Hello world 回覆,若收到請求及回覆請求的間隔很短,那表示Server 端處理沒問題,此時再檢視用戶端何時收到Server的回覆. 藉著來回的封包來判斷問題。

     

    希望對這個問題的處理有些幫助。

     

    林泰宏 Terry Lin 
    技術支援工程師 Support Engineer
    Developer Support Team
    Global Technical Support Center - Taiwan

    技術支援服務首頁: http://support.microsoft.com

    技術支援專線: 0800-008-833(市話專用)/ 02-2999-8833

     

     

     

    2008年2月18日 上午 06:21
  • 感謝 taihon 兄的幫忙

    由於該網址可能被公司的防火牆擋下來,一直連不上去

    只好等回家再抓下來,明天再來公司測試看看了

    謝謝你提供的資訊喔

    2008年2月18日 上午 09:01
  • 不好意思~又要麻煩大家幫忙了

    我在主機上監視了封包

    看起來應該是這邊有問題

     

    Time Offset Source   Destination    Protocol Description                  

    2.968750  Client端IP 255.255.255.255 DHCP  DHCP: Boot Request, MsgType = INFORM, TransactionID = 0xEEE5F4EC

    6.968750  Client端IP 255.255.255.255 DHCP  DHCP: Boot Request, MsgType = INFORM, TransactionID = 0xEEE5F4EC

     

    14.015625   Client端IP   Server端IP      TCP    TCP: Flags=.S......, SrcPort=1154, DstPort=HTTP(80), Len=0, Seq=2281005069, Ack=0, Win=16384 (scale factor not found)

     

    上網查了一下資料,好像是尋找DHCP Server的關係

    目前公司內部確實是使用浮動式IP

    想請教一下,可能是這樣的情況嗎?對程式而言這有解決的方式嗎?

    不好意思,再麻煩各位了,謝謝!

    2008年2月19日 上午 03:07
  • 你的 client 連線到 server 測試時,先用 ip 測看看。

     

    另外你是用電腦名而非域名嗎?

     

    這個跟我的先前碰到的問題很像 (上面那個網址),是在本地尋找指定的電腦名是否存在,找三次,逾時時間分別是 2, 4, 8 秒,累積時間就是 2,6(2+4),14(2+4+8) ,我那時把網路卡的 IPX 通訊協定停用就不會在本地尋找電腦名。

     

    若是你是多層架構,比如說:

    client -> web service 對外 -> web service 其它

     

    那中間的連線都把 IPX 通訊協定關閉試看看 (不用移除,網卡該項通訊協定前面不要打勾即可)

    2008年2月19日 上午 04:17
    版主
  • 謝謝璉璉兄

    我這邊的架構是 Client -> WebService -> DB,但 WebService 和 DB 都在同一台主機上

    目前 Client 端的程式都是使用 IP 來指定 Server 端的 Service

    而且兩端都無安裝 IPX 通訊協定

    後來我在 Client 端安裝 IPX 通訊協定後再關閉

    仍舊產生同樣的狀況

    目前在繼續測試中,謝謝幫忙喔!

    2008年2月19日 上午 08:39
  • 你有其中一台同時啟用雙網卡以上嗎 (含虛擬網卡或是啟用 VPN)

     

    雙網卡的話有一個設定要調 (我忘了調啥,很久以前調過) ,不過可以把其它網卡停用,只留單一網卡測,沒問題再來找設定。

    2008年2月19日 上午 08:59
    版主
  • 報告,兩台都沒有耶!謝謝唷~

    2008年2月19日 上午 09:41
  • 目前先將 ASP.Net 改回使用1.1版,來改善這問題

    很感謝璉璉兄的大力幫忙,讓我多學了一招

    也很感謝 taihon 兄提供好用的工具喔!

    2008年2月21日 上午 11:51