我們正在將一些網站遷移到運行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%,這兩個環節,這兩者的工作在我們所有的其他環境蠻好的異常工作。任何其他想法?