2010-07-11 226 views
1

我有一個標準的php應用程序,它使用SQL Server作爲後端數據庫。每個我訪問的頁面都有嚴重的延遲。這是我的開發服務器,所以它不是現場設置的問題,但是在系統上工作真的很煩人。連接到SQL Server很慢

我在每頁上有5 - 8秒的延遲。

  • 我在虛擬機(Virtual PC)上運行SqlServer 2000 Developer Edition。
  • 我在我的開發機器上安裝了SqlServer,但得到相同的延遲。
  • 我將問題的號召,以mssql_connect(調用mssql_pconnect沒有效果)

  • 這是我如何設立(或不成立的,因爲我並沒有真正改變一個網絡問題默認配置)SQL服務器。這不是一個嚴格的編程問題,但我想我可能會在這裏得到一些有價值的反饋。

誰能告訴我,如果有一個小竅門,一組特定的協議,註冊表設置,東西會殺死這個延遲?

+0

什麼是主機操作系統?你如何在連接調用中引用數據庫服務器? – 2010-07-11 15:56:58

回答

1

運行虛擬PC,當我遇到網絡問題來了,相關的一切網絡很慢,嘗試添加在你的註冊表此項:

HKEY_LOCAL_MACHINE \系統\ CurrentControlSet \服務\ TCPIP \參數

  • 創建名爲DisableTaskOffload的新DWORD值並將其值設置爲1.

  • 重新啓動計算機。

它爲我工作,source

+0

謝謝,但似乎沒有任何區別。 – 2010-07-11 15:55:13

+0

你可以嘗試測試其他網絡相關是否緩慢,嘗試傳輸文件,如果它變慢,那麼它是虛擬電腦相關的,對我來說,我遷移到了virtualbox。 – Rodrigo 2010-07-11 16:11:17

1

這可能是一個DNS問題?我知道MySQL在每次登錄時都會進行反向DNS查詢(而不是每個連接)。如果您的服務器沒有反向DNS記錄(或者您的DNS速度較慢),則可能會導致登錄時出現嚴重延遲。 MySQL中有一個選項可以禁用它。我不確定SQL Server,但我認爲它可能會做類似的事情...

1

我記得同樣的問題,但忘記了,我們如何解決它。

要澄清請指定確切的連接字符串,您的SQLserver版本,並嘗試啓動這個舊的好工具c:\ WINDOWS \ system32 \ cliconfg.exe,這也可以帶來一些光。

是的,我知道,它是從2K開始的,但是m $的人不喜歡從頭創建客戶端工具。

也嘗試爲PHP獲取「正確」的mssql客戶端DLL。

1

我在每次連接時都會遇到5-10秒的延遲,使用PHP的官方Microsoft SQL驅動程序(正如@gaRex所建議的那樣) - 這裏發佈的答案都沒有解決。

正如@ircmaxell所建議的那樣,我的問題是DNS問題 - 解決方法是編輯\windows\system32\drivers\etc\hosts文件(本地本地主機文件)並將自己機器的名稱添加到該文件中。

在「系統屬性」對話框中,找到機器的「計算機名稱」 - 然後在本地主機文件中添加一行,如127.0.0.1 my-computer

對我來說,延遲再次發生,在下面的加載頁面的嘗試 - 之後,它是超級快,沒有任何延遲。

請注意,即使在物理機器上,不僅在VM上,也可能發生此問題。

希望這可以幫助別人。