上週月底檢測各個系統執行狀態的時候突然發現,檔案伺服器上缺少了幾天erp系統的備份資料,erp系統資料備份是日常工作中非常重要的一項,所以對這個問題進行了分析和處理,在此過程中學到一些新的知識,留此文以備以後查閱。
一、故障現象
9.1日檢查檔案伺服器異機備份情況發現,erp系統備份資料只有8.24日前的資料(下圖),其後一周的備份資料均消失,由於erp系統是重要的業務資料,所以立馬動手檢查。
二、故障分析
先來說說我們的備份方式, 首先我們在檔案伺服器上(下稱file)上建立網路共享提供備份空間,其次在erp上建立定期批處理任務進行備份,備份指令碼首先使用net use建立file到本地的磁碟對映,然後執行sql備份語句備份erp系統的業務資料到本地,最後指令碼使用xcopy將erp的業務資料複製到對映磁碟中。
鑑於此故障點可能出現在:a.檔案伺服器 b.erp伺服器 c.備份指令碼
a.近期沒有對file上的共享進行過調整,另外兩個備份目錄資料備份和上傳均正常,為全公司提供集中共享的目錄也執行正常,最後檢查了erp備份目錄的ntfs許可權/共享許可權,均無異常,所以排除了檔案伺服器的原因
b.在此備份過程中,erp伺服器主要完成定期任務的執行。登入erp系統檢查了計畫和任務列表,發現設定的備份任務在故障期間均有執行,所以排除了計畫任務失敗的原因。
c.備份指令碼本身已經固化,從部署之初就沒有進行過調整,檢查指令碼後也未發現任何異常。
感覺毫無頭緒的時候,突然想到備份指令碼設定了日誌來記錄指令碼的執行狀態,於是開啟8.24日的備份指令碼執行日誌,發現如下錯誤:
分析指令碼日誌後發現,指令碼中的sql備份語句執行正常,只是在備份成功後上傳至file失敗,而且是在8.24日的第二次備份時上傳失敗。
由此分析故障可能出現在指令碼建立磁碟對映的net use或者上傳的xcopy階段,嘗試在erp端使用net use z: \\ip\sharename 建立磁碟對映,這時系統提示「已達到計算機的連線數最大值,無法再同此遠端計算機連線」 ,無法建立磁碟對映那麼後續的上傳將無法執行。
三、故障處理
擺渡後得知,出現此項錯誤提示很有可能和session有關,所以分別在file和erp端執行 net session /list檢視當前的session情況,發現erp端會話數量為空,file端存在大量無效的session.同時檢查file端備份目錄發現同時允許共享使用者數量設定為100,找到問題的原因就好處理了。
1.可以加大file端備份目錄允許的共享使用者數量
2.可以在file端執行net session /del 清楚所有會話數連線即可
四、結論
其實伺服器端作業系統的共享session是很大的,只是由於當時設定共享的時候沒有考慮周全,所以設定的量較小,當指令碼執行了一段時間過後現有的session數量達到了file端的限制值,新的session就無法建立了;其次,由於session在建立過後,如果建立端的雙方不關閉連線,那麼會話會一直存在。從此次file上的session list上可以看到,erp和file之間建立了大量的session,並且長時間存在,最長的session 閒置時間達到了 16d 01h 18m;最後,綜合以上因素,首先加大file備份目錄的「同時允許共享的使用者數」,其次在file端建立如下批處理定期清理過期和無效的session。
關於session失效的問題
我在用xmlhttp進行頁面內請求jsp,或者servlet時,出現session失效問題,只是少資料電腦的ie有這樣的話.我在google了一把,只找到了一樣乙個資訊 10 為什麼session不見了 排除session正常失效的因素之外,伺服器本身的可能性應該是微乎其微的,雖然筆者在iplane...
Mysql引起索引失效的原因總結
在資料庫中做查詢等操作,經常發現查詢很慢,但是已經在列上建了索引,最後經過研究發現,很多種情況引起了索引失效。下面就對遇到的引起索引失效的原因做一下總結 不包括索引本身無效的情況 歡迎博友們補充。1 對單字段建了索引,where條件多欄位。例 建了以下索引 查詢語句 html view plain ...
Mysql引起索引失效的原因總結
sql語句where中如果有functionname colname 或者某些運算,則mysql無法使用基於colname的索引。使用索引需要直接查詢某個字段。索引失效的原因是索引是針對原值建的二叉樹,將列值計算後,原來的二叉樹就用不上了 為了解決索引列上計算引起的索引失效問題,將計算放到索引列外的...