發現公司框架有點問題

2021-08-29 18:55:56 字數 1060 閱讀 9523

剛結束乙個網路銀行專案,新版本上線後第二天,中間業務平台突然down掉(即網銀的大額轉賬發中間業務平台,但平台down掉了,所以網銀在那等待返回資訊,直到60秒返回超時),按說網銀中只有和中間業務平台有關的業務受影響,但很多網銀使用者都投訴個人網銀無法登入,卡死在登入首頁(附:登入個人網銀首頁時會查詢資料庫中的網銀公告資訊並顯示)

解決上面問題,還要從資料庫連線池說起。dbpool(一般將連線資料庫緩衝池的數量設定為60,即60個資料庫訪問控制代碼,分配給網銀20個連線,支付20個,**5個等等),現在有兩種拿到資料庫訪問控制代碼的方式:1每次運算元據庫前得到控制代碼,query或insert後釋放該控制代碼2該客戶執行乙個網銀操作(即執行乙個action的execute或submit)前得到控制代碼,執行此操作後才釋放控制代碼,懷疑公司框架採用的方法2從而導致:當乙個交易(此交易首先查詢資料庫得到客戶號,然後發此客戶號到核心進行查詢)連線核心系統60秒超時,此交易將占有乙個訪問資料庫的控制代碼,而一分鐘內有20個客戶進行轉帳交易,當第21個客戶登入首頁時(登入首頁交易會查詢網銀資料庫的銀行公告資訊,訪問資料庫控制代碼的執行緒都鎖住了,他就無法訪問資料庫,就在那兒傻等直到連線資料庫超時),就卡在首頁不動

如何判斷我們的框架是採用那種方式鎖住控制代碼的呢,看公司原始碼是乙個方法,可公司框架原始碼都進過加密了,變數都是abcd,讀起來很吃力,所以我想了個笨法子:首先我們將緩衝池的鏈結數量設定少一些設為2。在配置檔案中寫3個簡單交易【a頁面進過execute方法跳轉到b頁面,執行進入execute方法(方式2)中首先執行一條sql1(方式1),執行後再執行休眠1分鐘thread.sleep(1000*60l),然後再執行一條sql2語句(這句話的作用下面會說)】,第二個交易休眠1小時(讓他始終佔據乙個訪問資料庫控制代碼執行緒),第三個交易是執行sql3語句。啟動伺服器開打並提交a頁面,然後提交第二個交易,即現在僅有的2個連線都被我們鎖住了。接下來我們執行第三個交易,但此時沒有查詢網銀資料庫的控制代碼可用,故ie卡在那裡了。1分鐘後(1000*60毫秒),後台日誌發現先執行了sql1,然後執行了sql2,最後執行了sql3,則證明:公司框架的乙個不足,即在執行過乙個execute前拿到乙個訪問資料庫控制代碼,執行execute之後方才釋放此控制代碼,故會造成上面的現象:其他使用者訪問網銀首頁卡在那兒不動無法訪問。

php用框架有什麼好處

開發人員使用php框架的好處很多,其中之一是加快開發程序。在類似專案中重用 將為開發者節省大量的時間和精力。框架為執行繁瑣的 任務提供預建模組,因此,開發人員可以把時間花在實際應用的開發上,而不是每乙個專案都重新構建基礎功能。穩定是開發者使用框架的另乙個重要原因。雖然簡單是php最大的優點,很多人也...

2023年Python主流框架有哪些?

python是一門優雅的程式語言,被廣泛應用在web開發 遊戲開發 人工智慧 雲計算開發 大資料開發 資料分析 科 算 爬蟲 自動化運維 自動化測試等領域,python在各領域的應用最方便的就是使用框架,可以讓程式設計師以更少的 實現自定義功能,還可以將更多的精力集中在業務邏輯上,更加的輕鬆便利!2...

最常用Python開源框架有哪些?

python開源框架有很多,像django flask webpy等等,但哪些是最常用到的呢?我們收集了一些python使用者的寶貴意見,把他們認為最常用的python開源框架簡單的介紹給大家。在學習到python基礎和python高階時,一般不會使用到框架。但初學python時,你一定聽到過dja...