1. 程式人生 > >CSP平臺銀聯前置系統ATM他帶本和本代他交易失敗原因分析

CSP平臺銀聯前置系統ATM他帶本和本代他交易失敗原因分析

與銀聯資料中心連線的兩條client端通訊鏈路全部斷開後平臺沒有再重新建立client鏈路與銀聯資料中心通訊(CSP平臺內部機制會在子程序異常退出時再重新拉起新的服務代替異常退出的服務),導致之後所有發往銀聯前置的交易失敗,即ATM他帶本和本代他交易失敗。

1、           針對上述兩條鏈路斷開出現的原因有如下分析:

a、2012-XX-XX號10:56:22左右,銀聯前置呼叫上核心的806001交易,出現CICS超時(ECI_ERR_RESPONSE_TIMEOUT),導致上核心的這個CICS通訊伺服器退出(詳見com_R_34_844286.log),根據CSP設計機制,任何程序池的服務程序退出其父程序都會重新拉起一個新的服務程序取代已經退出的程序來為後續的交易提供服務,因為上述上核心的服務程序因CICS響應806001交易超時退出,導致CSP主動拉起新的服務程序代替已經退出的程序。

b、在CSP平臺拉起上核心的服務程序cspcomhostcicscli時,cspcomhostcicscli會主動訪問資料庫,但是此時與資料庫連線的應用程式已經達到最大數目,即CSP平臺新拉起的上核心的cspcomhostcicscli服務程序報sqlcode:-1040,導致新拉起的cspcomhostcicscli服務退出,從而導致CSP平臺不停的迴圈重新拉起cspcomhostcicscli服務的動作,直到2012-XX-XX號11:07:30左右cspcomhostcicscli父程序發生系統呼叫阻塞(此過程中資料庫連線的應用程式一直是最大數目)。父程序發生系統呼叫阻塞後直至阻塞結束,父程序都不會再監控及響應其所有子程序的異常情況及異常情況的處理。

c、2012-XX-XX號3:57:19左右銀聯前置與銀聯資料中心連線的其中一條client端通訊鏈路在給銀聯資料中心傳送資料的時候,作為與銀聯資料中心通訊的機制,每次傳送資料的時候都會檢查鏈路狀態,此時通訊服務在檢查鏈路狀態的時候失敗,導致此鏈路退出。作為與銀聯資料中心“兩進兩出”的長連線通訊機制,這四條鏈路屬於同一組,這一組中的任何一個通訊出現問題,都會導致其餘三個鏈路也會被關閉,並同時拉起新的服務來保證“兩進兩出”這個鏈路同時更新。

d、銀聯前置與銀聯資料中心通訊的兩條client端鏈路與上核心的服務cspcomhostcicscli同屬於一個父程序(銀聯前置與銀聯資料中心通訊的兩條server端鏈路),而此時他們的父程序由於重啟cspcomhostcicscli時系統呼叫阻塞(參見b的解釋),導致銀聯前置與銀聯資料中心通訊的client端服務異常退出時沒有監管,從而導致此服務退出後就再沒有和銀聯資料中心的通訊的服務存在,從而使所有ATM他帶本和本代他交易都失敗。

e、銀聯前置與銀聯資料中心通訊的兩條server端鏈路屬於另外的兩個父程序,且是併發伺服器模式(client是程序池模式)提供服務,接到請求報文後可繼續提供服務。

問題的處理建議

1、檢查銀聯前置資料庫的配置引數,根據最大啟動的程序數的一定倍數,放大資料庫最大應用連線數。

2、檢查核心806001交易返回超時的原因,儘可能避免此類問題出現(在這次生產事故中,上核心的服務異常退出趕上資料庫連線數達到最大值,導致其父程序不停地在fork子程序,直到父程序出現阻塞,在此時間段內相當於在生產環境對CSP平臺做穩定性和可靠性效能測試)。

3、  對CSP平臺的穩定性和可靠性作進一步優化,特別是父程序阻塞狀態優化處理及子程序退出策略的優化處理,目前已有成熟方案另行提供。