黃黎明
摘要:本文主要討論Microsoft SQL Server 數(shù)據(jù)庫連接超時(shí)并不響應(yīng)的原因分析及相關(guān)可能解決辦法,以供從事SQL Server 數(shù)據(jù)庫運(yùn)維工作工程師處理日常問題提供一些參考。
關(guān)鍵詞:SQL Server;數(shù)據(jù)庫;連接超時(shí);運(yùn)維
中圖分類圖:TP311 ? ? ? 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2020)31-0049-02
1引言
SQL Server 是微軟公司開發(fā)的一個(gè)大型的關(guān)系型數(shù)據(jù)庫系統(tǒng),它為用戶提供了一個(gè)安全、可靠、易管理、高端的客戶、服務(wù)器數(shù)據(jù)庫平臺。它是一種高性能的關(guān)系型數(shù)據(jù)庫系統(tǒng),使用客戶機(jī)/服務(wù)器為設(shè)計(jì)結(jié)構(gòu),支持多個(gè)當(dāng)前主流開發(fā)平臺,支持企業(yè)應(yīng)用程序,支持XML等,它是一個(gè)全面的數(shù)據(jù)管理和業(yè)智能平臺,為關(guān)鍵業(yè)務(wù)提供了企業(yè)級的可擴(kuò)展性、數(shù)據(jù)倉庫、安全、高級分析、和報(bào)表支持。主要有三個(gè)特點(diǎn):一,可信任,使得公司可以以很高的安全性、可靠性和擴(kuò)展性來運(yùn)行關(guān)鍵任務(wù);二,高效,使公司可以降低開發(fā)和管理其數(shù)據(jù)基礎(chǔ)設(shè)施的時(shí)間和成本;三,智能,提供了一個(gè)全面的平臺,可以在用戶需要時(shí)給其發(fā)送觀察和信息。作為當(dāng)前世界主流的關(guān)系型數(shù)據(jù)庫在國內(nèi)應(yīng)用很廣泛,無論是教育、醫(yī)療、銀行等各行各業(yè)都有在使用。它極大地方便了數(shù)據(jù)的存儲、管理、使用及分析提取。但是,在日常使用中我們難免遇到各種各樣的問題,有時(shí)候讓我們這些數(shù)據(jù)庫運(yùn)維管理人員很頭疼,不知道怎么解決。本文作者在一次日常維護(hù)中遇到了訪問數(shù)據(jù)庫特別慢的問題,通過查閱各種資料,終于解決了問題,于是想著把這些經(jīng)驗(yàn)寫出來供大家參考。
2 問題描述
某三甲醫(yī)院HIS(醫(yī)院信息系統(tǒng))突然運(yùn)行特別慢,還報(bào)“連接超時(shí)時(shí)間一到。在嘗試使用預(yù)登錄握手確認(rèn)時(shí)超過了此超時(shí)時(shí)間。這可能是因?yàn)轭A(yù)登錄握手失敗或服務(wù)器未能及時(shí)響應(yīng)。嘗試連接到此服務(wù)器時(shí)花費(fèi)的持續(xù)時(shí)間是 pre-login initialization = 15 handshake = 14993; Microsoft SQL Server 等待的操作過時(shí)”錯(cuò)誤,如圖1所示,同時(shí)數(shù)據(jù)庫管理員登錄數(shù)據(jù)庫管理系統(tǒng)也提示數(shù)據(jù)庫連接超時(shí),在嘗試使用預(yù)登錄握手確認(rèn)時(shí)超過了此超時(shí)時(shí)間。
此問題初次出現(xiàn)是由于臨床科室醫(yī)生放映開醫(yī)囑特別慢,應(yīng)用程序報(bào)連接數(shù)據(jù)庫超時(shí)錯(cuò)誤,HIS系統(tǒng)有問題,當(dāng)試圖通過SQL Server企業(yè)管理器用賬號登錄數(shù)據(jù)庫時(shí),前面6次左右連接都是報(bào)連接失敗已超時(shí),登錄失敗;登錄成功之后再執(zhí)行 SQL語句查詢時(shí),也很長時(shí)間不響應(yīng)。EMR(電子病歷系統(tǒng)),PACS(放射影像系統(tǒng)),LIS(檢驗(yàn)系統(tǒng))等其他業(yè)務(wù)系統(tǒng)正常,同時(shí)HIS服務(wù)器其他業(yè)務(wù)如web業(yè)務(wù),郵箱業(yè)務(wù),ftp業(yè)務(wù)等都是正常。醫(yī)院目前所有的系統(tǒng)都是架構(gòu)在由8臺物理主機(jī)構(gòu)建的VWWARE虛擬機(jī)上,虛擬機(jī)平臺是VSPHERE6.0 ,操作系統(tǒng)是Windows Server 2012, 數(shù)據(jù)庫是SQL Server 2008R2 服務(wù)器網(wǎng)卡是VMXNET3虛擬網(wǎng)卡,物理機(jī)的網(wǎng)卡是萬兆網(wǎng)卡。
3原因分析
在以下情況下,通常會出現(xiàn)“連接超時(shí)預(yù)登錄握手超時(shí)SQL Server”錯(cuò)誤:
SQL Server數(shù)據(jù)庫引擎的實(shí)例未運(yùn)行。
SQL Server瀏覽器服務(wù)未運(yùn)行。
TCP / IP被禁用。
存在網(wǎng)絡(luò)問題。
數(shù)據(jù)庫引擎實(shí)例的TCP / IP端口被防火墻阻止。
客戶端和服務(wù)器未配置為使用相同的網(wǎng)絡(luò)協(xié)議。
磁盤空間不足
4 問題解決
在本節(jié)中,我們將更詳細(xì)地說明上述“連接超時(shí)預(yù)登錄握手超時(shí)SQL Server ”的根本原因。
4.1 SQL Server數(shù)據(jù)庫引擎的實(shí)例未運(yùn)行
應(yīng)通過執(zhí)行以下操作確保每個(gè)SQL Server數(shù)據(jù)庫引擎已啟動并正常運(yùn)行。
打開SQL Server配置管理器如圖2確保SQL Server服務(wù)狀態(tài)正在運(yùn)行。如果它沒有運(yùn)行,請嘗試啟動它。如果啟動不了!請檢查下SQL Server服務(wù)。
4.2 SQL Server瀏覽器服務(wù)未運(yùn)行
再次打開SQL Server配置管理器如圖3 確保SQL Server瀏覽器服務(wù)正常運(yùn)行。
4.3TCP/IP 被禁用
再次打開SQL Server配置管理器如圖4 確保TCP/IP協(xié)議已啟用。
4.4檢查網(wǎng)絡(luò)連接
在應(yīng)用程序服務(wù)器上,嘗試以管理員身份打開CMD運(yùn)行telnet命令:telnet ip address 1433以確保該端口已打開且可訪問。
4.5 檢查數(shù)據(jù)庫引擎實(shí)例的TCP/IP端口是否被防火墻阻止
TCP / IP的默認(rèn)端口為1433。因此,我們應(yīng)確保數(shù)據(jù)庫引擎正在偵聽已分配的TCP / IP端口,默認(rèn)為1433。然后在防火墻中允許SQL Server TCP / IP端口。在數(shù)據(jù)庫服務(wù)器>打開Windows防火墻選擇入站規(guī)則,然后右鍵單擊入站規(guī)則>選擇新的入站規(guī)則,如圖5。
然后單擊步驟>檢查端口,在“協(xié)議和端口”上,單擊“步驟>選擇TCP,特殊本地端口>輸入SQL端口”然后點(diǎn)擊保存,如圖6所示:
4.6客戶端和服務(wù)器未配置為使用相同的網(wǎng)絡(luò)協(xié)議
打開網(wǎng)絡(luò)連接檢查客戶端和服務(wù)器本地適配器是否啟用了相同網(wǎng)絡(luò)協(xié)議如IPV4和IPV6。首先我們打開服務(wù)器上的網(wǎng)絡(luò)和共享中心,點(diǎn)擊適配器設(shè)置>右鍵本地連接>屬性。
如果IPV6是選中的,那么客戶端上也應(yīng)該被選中。如何IPV6沒有被選中,那么客戶端上也不應(yīng)該不選中。
4.7 磁盤空間不足
檢查服務(wù)器磁盤空間是否不足,打開數(shù)據(jù)庫服務(wù)器,檢查數(shù)據(jù)庫所在磁盤空間是否剩余很少,如果剩余空間不足20%,嘗試磁盤擴(kuò)容看是否解決問題。
5 結(jié)束語
本案例中,最后發(fā)現(xiàn)是由于數(shù)據(jù)庫所在磁盤空間不足引起的I/0很慢導(dǎo)致的性能瓶頸。在這個(gè)過程中總共花費(fèi)了一周時(shí)間。因?yàn)橹皺z查服務(wù)器的時(shí)候,發(fā)現(xiàn)數(shù)據(jù)庫所在磁盤總共空間是800GB還剩100GB,我們就沒懷疑是磁盤空間不足的原因。我們首先想到的是防火墻攔截1433的端口導(dǎo)致的。因?yàn)槲覀冊诜?wù)器上用local host登錄數(shù)據(jù)庫時(shí)響應(yīng)速度很快,用127.0.0.1和服務(wù)器IP地址甚至服務(wù)器計(jì)算機(jī)名登錄數(shù)據(jù)庫都很慢。我們就想是不是因?yàn)榉莑ocal host登錄要走網(wǎng)卡和防火墻。我們就一直懷疑是網(wǎng)卡或者防火墻的原因。其中我們更換了服務(wù)器網(wǎng)卡,修改了防火墻規(guī)則,還參照網(wǎng)上關(guān)閉虛擬機(jī)的rsc(接收段合并)技術(shù),都沒有效果,后面磁盤擴(kuò)容是在把本文前面提到的問題都排除之后才采取的措施。這中間經(jīng)歷了很多彎路,希望讀者借鑒,以節(jié)約處理此類問題的時(shí)間。筆者建議此類問題還是先從常規(guī)手段排查開始,以免走進(jìn)死胡同。本文結(jié)合作者日常工作中遇到的問題出發(fā)詳細(xì)列出了SQL Server數(shù)據(jù)庫連接超時(shí),連接慢的問題,并提出了可能的幾種原因并提出了相應(yīng)的解決辦法,以供讀者參考。
參考文獻(xiàn):
[1] 黃釗吉,熊章立.SQL Server On Linux運(yùn)維實(shí)戰(zhàn)[M].北京:人民郵電出版社,2019.
[2] 鄧立國,佟強(qiáng),楊姝,蔣寧.數(shù)據(jù)庫原理與應(yīng)用[M].北京:清華大學(xué)出版社,2017.
[3] 明日科技.SQL Server從入門到精通[M].北京:清華大學(xué)出版社,2014.
【通聯(lián)編輯:梁書】