MEMO-ASP.NET偶發ORA-12571 TNS封包寫入器失敗

第二次遇到,近年因孟婆湯飲用過量,花了點時間才回憶起,特PO文備忘。

ASP.NET網站伺服器遷移後,查詢Oracle資料庫時偶爾會出現"ORA-12571: TNS:封包寫入器失敗(TNS:packet writer failure)",但重新整理網頁後則又正常。

Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlVarCtx* pOpoSqlVarCtx, Object src, String procedure) at Oracle.DataAccess.Client.OracleCommand.ExecuteReader(Boolean requrey, Boolean fillRequest, CommandBehavior behavior)
at Oracle.DataAccess.Client.OracleCommand.

經爬文發現此錯誤多屬網路傳輸層次問題,多因網路品質、傳輸設備、防火牆... 等因素導致與Oracle伺服器網路連線發生中斷引起。而新近ASP.NET伺服器環境的主要變動是納入負載平衡設備(Load Balancer, NLB)管轄,因此與Oracle資料庫的連線預設也會經過NLB設備,有可能是造成問題的原因。

試著將伺服器移出NLB,問題就消失了;配合網管人員由NLB觀察,確認NLB的Session管理機制會導致Oracle連線Session中斷(但SQL Server的連線則不會)。將Oracle連線排除在NLB管理範圍外,問題排除!

歡迎推文分享:
Published 10 April 2012 10:50 AM 由 Jeffrey
Filed under:
Views: 11,599



意見

# 仙草 said on 23 July, 2012 10:18 PM

請問黑暗大~ 小弟這邊也遇到這個問題, 可是我們公司必須要有兩台以上的Web Servers一起服務, 不能移出NLB說

您是否有建議的解決方案呢, 我們公司是用F5 BIG-IP 1600

謝謝!

# Jeffrey said on 24 July, 2012 12:20 AM

to 仙草, (炎炎夏日回覆你的留言有股特別的清涼感, 名字取得好!) 網管設備不在我的守備範圍,不確定你說的F5機型能否單獨把Web對Oracle的Session排除在NLB之外(外部對Web仍用NLB)? 不過,就算設定上無法分割,若預算允許,在Web上加一張網卡,讓Web走另非NLB網段去連Oracle,應該也是個不錯的解決方案。

# 仙草 said on 24 July, 2012 12:54 AM

黑暗大真是充滿智慧,加張網卡的方法應該可行,您真厲害!

希望我可以早點把掩蓋這個問題用的「系統忙碌中」訊息給處理掉,哈哈

感謝~

# Nolem said on 01 March, 2016 06:30 AM

個人經驗,Nlb+fw 針對oracle和網站連線 bind 住固定通道,或是heart beat fixed tunne 應該可一樣納入不需排除

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<April 2012>
SunMonTueWedThuFriSat
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication