做爲總公司IT部門,天然承擔着各個分公司的運維技術支持工做,因爲公司的性質,分公司常常負責維護這各家官老爺的服務器,同時這些服務器也做爲和官老爺數據之間的鏈接。。。。。。此處省略一萬字。sql
今天分公司就有個負責人發過來一段服務器的報錯信息,大體以下「數據庫
FireF|y゛ 2016/5/23 15:36:19
日誌名稱: Application
來源: XXXXX windows
日期: 2016/5/23 11:47:30
事件 ID: 0
任務類別: 無
級別: 錯誤
關鍵字: 經典
用戶: 暫缺
計算機: WIN-H48V8MB5TAA
說明:
Timestamp: 2016/5/23 3:47:30
Message: 從MQ:.\private$\dsddataexport 中獲取報文寫入 SQLSERVER 數據庫:XXXXX 時出現異常 ,具體的異常信息爲:在向服務器發送請求時發生傳輸級錯誤。 (provider: TCP 提供程序, error: 0 - 遠程主機強迫關閉了一個現有的鏈接。)該服務線程已經中止! 配置信息爲:<?xml version="1.0"?><Rule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><MQPath>.\private$\dsddataexport</MQPath><Enabled>true</Enabled><Model>UPDATE</Model><DBType>SQLSERVER</DBType><IP>10.XX.XX.X </IP><UserName>PDC_USER</UserName><Password>PDC_USER</Password><DataBaseName>XXXXX </DataBaseName></Rule>
Category: General
Priority: 5
EventId: 0
Severity: Error
Title:
Machine: WIN-H48V
Application Domain: XXXXX .exe
Process Id: 21216
Process Name: E:\XXXXX \DSD\DSD\XXXXX \XXXXX .exe
Win32 Thread Id: 20052
Thread Name:
Extended Properties:
事件 Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="XXXXX " />
<EventID Qualifiers="0">0</EventID>
<Level>2</Level>
<Task>0</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2016-05-23T03:47:30.000Z" />
<EventRecordID>99</EventRecordID>
<Channel>Application</Channel>
<Computer>WIN-H48V</Computer>
<Security />
</System>
<EventData>
<Data>Timestamp: 2016/5/23 3:47:30
Message: 從MQ:.\private$\dsddataexport 中獲取報文寫入 SQLSERVER 數據庫:XXXXX 時出現異常 ,具體的異常信息爲:在向服務器發送請求時發生傳輸級錯誤。 (provider: TCP 提供程序, error: 0 - 遠程主機強迫關閉了一個現有的鏈接。)該服務線程已經中止! 配置信息爲:<?xml version="1.0"?><Rule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><MQPath>.\private$\dsddataexport</MQPath><Enabled>true</Enabled><Model>UPDATE</Model><DBType>SQLSERVER</DBType><IP>10.74.230.75</IP><UserName>PDC_USER</UserName><Password>PDC_USER</Password><DataBaseName>XXXXX </DataBaseName></Rule>
Category: General
Priority: 5
EventId: 0
Severity: Error
Title:
Machine: WIN-H48V
Application Domain: XXXXX .exe
Process Id: 21216
Process Name: E:\XXXXX \DSD\DSD\XXXXX \XXXXX .exe
Win32 Thread Id: 20052
Thread Name:
Extended Properties: </Data>
</EventData>
</Event>
服務器
」
網絡
簡單看了下報錯信息,本覺得是傳輸的問題,可是檢查了網絡檢查了消息隊列,並未發現任何異常,以及任何錯誤信息,看來和傳輸應該沒有關係,運維
再仔細看了下服務,該服務並非windows自帶服務,而是公司爲經過消息隊列傳輸的數據寫入到sql2005數據庫裏面,同時也檢查了sql的相關信息,也未發現錯誤,仔細查看報錯信息發現:「遠程主機強迫關閉了一個現有的鏈接。)該服務線程已經中止! 」ide
這句話是重點所在,咱們也能夠理解爲,當在創建鏈接時,發現創建鏈接超過了,沒法創建鏈接,那麼應用程式主動關閉了一個鏈接,url
因爲該服務由.net編寫而成,仔細查閱了下.net數據鏈接池的概念,發現.net默認最大的鏈接數爲100,且默認爲ture狀態,那麼若是在編寫代碼的時候沒有定義該鏈接池,長時間使用後鏈接池沒有釋放,就會產生該問題,spa
須要在代碼中加入.net
pooling=false
or Max Pool Size的值,
接下來的事情就是讓分公司人員去找對應的開發人員,修改其代碼進行定義,OK!