生產(chǎn)環(huán)境的系統(tǒng),在查詢數(shù)據(jù)的時(shí)候,日志記錄數(shù)據(jù)“Timeout 時(shí)間已到。在操作完成之前超時(shí)時(shí)間已過或服務(wù)器未響應(yīng)?!?,“等待的操作過時(shí)”等,初步判斷是因?yàn)椴樵兂瑫r(shí)導(dǎo)致的,根據(jù)源碼分析,獲取到查詢操作的SQL腳本,然后跟蹤到查詢業(yè)務(wù)的SQL參數(shù)信息,在數(shù)據(jù)庫(kù)中查詢,發(fā)現(xiàn)數(shù)據(jù)的返回時(shí)間小于1s,基本上是實(shí)時(shí)返回,排除了鎖表等操作。
后更改數(shù)據(jù)查詢的超時(shí)時(shí)間,改成3分鐘,系統(tǒng)還是報(bào)查詢超時(shí)。但是程序在測(cè)試環(huán)境,反復(fù)的測(cè)試,也沒有問題;而且程序昨天是正常的,數(shù)據(jù)量也沒有出現(xiàn)暴增的情況,整體的數(shù)據(jù)量也不大。
后通過網(wǎng)絡(luò)查詢,發(fā)現(xiàn)有重啟服務(wù)器解決該問題的方法,但是由于是生成環(huán)境,沒法進(jìn)行重啟服務(wù)器,客戶在等,很是著急。后在通過萬(wàn)能的網(wǎng)絡(luò),查詢到,可能是參數(shù)化傳參導(dǎo)致的,傳遞參數(shù)的SqlDbType和數(shù)據(jù)庫(kù)里的類型不一致會(huì)導(dǎo)致出現(xiàn)數(shù)據(jù)庫(kù)上直接查詢,返回?cái)?shù)據(jù)很快,但是通過程序去查詢,會(huì)出現(xiàn)查詢超時(shí)的情況。然后去檢查程序和數(shù)據(jù)庫(kù),發(fā)現(xiàn)確實(shí)不一致,程序中使用的是SqlDbType.VarChar,但是在數(shù)據(jù)庫(kù)存儲(chǔ)中使用的數(shù)據(jù)類型是NVarChar。
然后修改程序的SQL語(yǔ)句不是參數(shù)化傳參,改為拼接的方式,然后發(fā)布程序,登錄檢測(cè),發(fā)現(xiàn)程序正常返回?cái)?shù)據(jù),這樣看來,問題就出現(xiàn)在C#程序中的參數(shù)化的參數(shù)類型和數(shù)據(jù)庫(kù)中的類型不一致導(dǎo)致的。
這個(gè)Bug,是個(gè)隱藏的Bug,問題不會(huì)一直出現(xiàn),因?yàn)槌绦蛑羞@樣操作的,不僅僅是這個(gè)查詢的一處地方。這次的問題比較特殊,做個(gè)記錄,以備下次查詢。
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。