2012-10-10 52 views
6

我們正在將一些網站遷移到運行Windows 2008虛擬機的雲基礎架構上。這些網站都使用MySQL數據庫在ColdFusion上運行。他們目前正在我們的CoLo中運行,沒有任何問題。此外,他們正在我們的辦公室開發網絡上運行,沒有任何問題。ColdFusion 10與MySQL的通信鏈接故障

我們正在設置我們的雲以儘可能匹配我們目前使用的配置,實質上是一臺服務器上的CF10 + IIS和另一臺機器上的MySQL。我們已完成99%,大部分事情都很順利。但是....

我們遇到了一對夫婦,在2,在這裏我們點擊一​​個鏈接/按鈕和地方都笑臉相迎:

錯誤執行數據庫查詢。

通信鏈路故障從服務器成功接收的最後一個數據包是0毫秒前。成功發送到服務器的最後一個數據包是0毫秒前。

掃描堆棧跟蹤我還發現: Caused by: java.net.SocketException: Connection reset

的通信鏈路錯誤總是:0毫秒。

最令人費解的是查詢似乎是造成這種情況的是簡單所有在網站上使用的查詢沒有問題。爲什麼他們在這方面失敗了2個特殊的地方讓我們陷入了困境。

我們唯一的線索是,查看哪些腳本被調用的CF錯誤描述,我們可以看到查詢失敗的腳本正在調用兩次?例如,出現次數的一個是我們的應用程序文件:

>The error occurred in D:/Our_Web_Sites/oursite/Application.cfm: line 73 
>Called from D:/Our_Web_Sites/oursite/Application.cfm: line 17 
>Called from D:/Our_Web_Sites/oursite/Application.cfm: line 1 
>Called from D:/Our_Web_Sites/oursite/Application.cfm: line 73 
>Called from D:/Our_Web_Sites/oursite/Application.cfm: line 17 
>Called from D:/Our_Web_Sites/oursite/Application.cfm: line 1 

我們可以找到什麼在我們的CF代碼將導致腳本被調用兩次,所以我們的猜測是,第一個電話是在查詢失敗所以CF再次嘗試...只是失敗和錯誤。

使用谷歌搜索這個問題我發現了很多關於更改MySQL超時的文章。這些都沒有工作,我沒有指望他們,因爲我們正在處理的似乎不是超時問題。這些頁面每次都失敗。

離我們最近的解決方案來自此博客文章: http://www.talkingtree.com/blog/index.cfm/2011/1/12/Validation-Query-for-MySQL-communications-link-failure

如果我們在CFAdmin中未設置「維護跨客戶端請求的連接」設置,則錯誤消失。該博客建議將選中的項留下,這是我們的首選項,並使用「SELECT 1;」的連接驗證。試試...同樣的錯誤。

我們也嘗試了JDBC AutoConnect = true選項。沒有效果。

下載最新的JDBC Connector並用它代替標準的CF10-MySQL連接器。沒有效果。

此外,該網站的99%,這兩個環節,這兩者的工作在我們所有的其他環境蠻好的異常工作。任何其他想法?

回答

0

我覺得我每次升級CF或MySQL時都會遇到類似的問題。通常,JDBC驅動程序或連接字符串中的更改會有所幫助,而我發現您已經嘗試過了。

你是否檢查過任何提示的MySQL錯誤日誌?我們在/ var/lib/mysql(無論你的'datadir'變量設置爲什麼),並以.err擴展名結尾。

此外,也許嘗試一些其他JDBC連接字符串選項爲您的版本?我看到一些可以啓用的擴展日誌記錄。 http://dev.mysql.com/doc/refman/5.1/en/connector-j-reference-configuration-properties.html

0

發現此問題。我們正在Savvis的雲基礎設施上運行我們的網絡。我們從Savvis使用的Windows服務器實例安裝了趨勢科技服務器深度安全防護系統客戶端。這是一個入侵保護系統,這是問題所在。禁用該服務可清除所有通信錯誤。我不知道爲什麼它拒絕了之前剛剛接受的一些查詢。我很高興(終於)把它放在我身後!

相關問題