看板 Soft_Job 關於我們 聯絡資訊
※ 引述《ggg12345 (ggg)》之銘言: : 這個error message在google網上看見的就類似這種訊息: : <WebLogicServer> <BEA-000337> <[STUCK] ExecuteThread: '4' for queue: : 即使是 2014 2月 照樣有這種訊息在發問. : 這個message說法就是某個thread 在queue 呆太久, 超過設定的default 時限. : 這現象就是接近教科書說的 dead lock. 最簡單解法就是 "人工進入"宰掉重跑. 可能是我不太懂的關係, 不過我只有在DB的運作裡聽過dead lock...... 戶政系統的狀況是到200 or 250 的時候, 所有的thread 除了I/O socket以外 全部都變成block or wait......至於是200還是250 我還沒有確切的消息, 而這個 狀況是kill process也解不了的. : 對系統管理員是這樣子靠他來救. : 這種錯是系統分析者的失誤沒考慮到. 但若是太大塊的分工, 寫程式的負責這個 : 功能與算法, 那就是寫程式的寫出錯誤的狀況. : 再怎麼說, 這就是通稱不知何時何處會冒出問題的 爛code. : 從2月之後的報導, 都是這現象. 申請者與戶政服務人員等得天荒地老還不來! : : 我倒不覺得架構有問題, 戶役政系統的Bussiness Logic 也不會牽涉到算法的問題 : : 純粹是PM 不OK 沒有進行適當的風險規避以及沒有足夠的經驗判斷問題點. 我還是不覺得系統分析需要對這一塊負責. 系統分析負責做流程跟架構, 這塊 本來就是PM要請系統工程師進行相容性測試的. : 新系統與舊系統的差別就反應在最近一系列新公布的規章上. : 以結婚/離婚為例, 兩造帶了證件, "同時人到" "任一個戶政所" 都可辦理. : 在人工的時代, 女方會先拿證件就其地遷出戶籍, 再拿到夫家戶政所入籍, 同 : 時依結婚證書登錄雙方關係, 同時更新戶口謄本與身份證. : 在電子化之後, 各地形成了分散式資料庫. 理論上, 人工的遷移戶口用男方所 : 在地的戶政區公所的電子公文對女方所在地請求遷出, 並傳送戶籍謄本, 就能 : 遠地辦到. 但不論是否集中避免遠近的通訊延遲, 按地區建檔的資料庫還是可 : 以分區做data parallel的分queue各自處理. 電子化以後其實並沒有形成分散式資料庫. 就我所知原來的系統是在離峰時間 跟中心的資料庫進行資料的抄寫. 當然可能有註記的問題. 這一塊可能是用人工調整的 不過起碼在台北市這邊, 戶口的遷移是在遷出地或遷入地任何一方辦理即可. 如印鑑證 明等業務更是在臺北市內任一戶政事務所辦理即可. : 不過, 這涉及請求與批准的權限, 直白一點就涉及"越權"與"入侵". 因此, 由 : 內政部統一發號施令是可避免一堆點對點的來往. : 新系統顯然是集中單一權限的概念. 婚姻的登錄規章顯然因新的戶警分立與外 : 配而改了. 事情變成在任何戶政所都能登錄與更改身份證, 但最近新婚的需要 : 雙方同時到場驗證. 在某種程度上, 可能這是防止一夫配多妻的狀況發生. : 手工時代, 本來從任何一方戶政所憑結婚證書與戶籍謄本, 就可以請求更改身 : 份證的配偶欄位記錄. : 那時是很單純的.譬如女方, 1.查證 男女證書/原謄本記錄. 2.調出女戶籍原本 : 更新. 3.更新女謄本/身份證. 其實我猜測新系統涵蓋舊系統的流程操作部分, 可能直接用Java包4GL就直接做掉了 裡面的procedure甚至可能直接用原來的4GL 不過這個我完全沒有根據. 只是很好奇新系統幹嘛用informix. 戶政作業流程不是電腦改就可以改的, 內政部這邊要先修改作業辦法、作業細則, 報行政院院會通過, 公佈以後才能修改. 所以我覺得可以不用扯到戶政的作業流程去, 只需要討論戶政系統的作業方式就好. : 底下這是猜測的一個可能沒分析寫好造成dead lock的一個可能情形. : 1.查證男女證書 2.向內政部發出配偶欄更新申請. 3.內政部通知更新男女方. : 3a-1.男方戶政機查閱男方, 女方資料庫戶籍, 並企圖鎖住更新.3a-2.更新男方. : 3b-1.女方戶政機查閱女方, 男方資料庫戶籍, 並企圖鎖住更新.3b-2.更新女方. : 最明顯的dead lock 就是互相先等待對方發不了的信息. : 3a-1開了男方,尚未拿到女方. 但同時3b-1卻已開了女方, 正等待男方. 雙方僵持 : 直到 default time-limit, 再由3.內政部 重新發出通知. : 因為資料集中, 無法怪罪網路延遲, 通知更新的雙方很快又同時發生, 就等 : time-out 再重來. : 如果 男女方戶政機因不同負載有一方延遲, 就有可能不會互鎖, 就可能過關. : 這就形成了time-dependent error, 時有時無, 很難正確查覺. 這個例子可能過於簡單, 不過我承認在某些constrain下, 這是有可能造成dead lock 的. 只是這個dead lock 只會影響相關的資料, 不會在concurrent 250U的狀況下 造成system hang.. : 人工時代需要調閱戶籍謄本, 這是一個read-only 的 copy, 所以分散各地的戶政 : 所可以透過 預取的 read-only copy 各自平行處理, 不容易出這種錯. : 以上純屬想像狀況. 目前的新系統顯然是有 許多新法規 要求要配合. 問題應該是 : 由這些新狀況引發的. 承上, 我不覺得實際狀況是這樣. : ======== : 再說, 如果一個系統寫得很好, system admin 可能就沒事彰顯其重要性, 在這裁 : 員精簡的時代, BEA-000337 message 的發生, 可以保證增加幾個重要職缺. 公家機關基本上無此可能. 就算無給職也不可能. : : 至於分散式平行處理, 坦白說, 基本上台灣都是在local site處理, 沒有人在 : : metro-wide做分散式平行處理. 光network latency就會造成不輸給這次事件的delay : → lovdkkkk:Thread.sleep(99999999); <-- dead lock? 03/18 14:59 : → saitoh:如果不知道wls判斷stuck thread的條件是什麼就不要亂猜了 03/18 15:14 : → alan3100:..我覺得直接找原文書來貼都比你在那解釋還清楚 03/18 15:17 : stuck 未必來自dead lock, 但只要呆太久超過default值都會出此訊息. : 那堆戶政機, 在新規範要求相互查核驗證下, 是會互動回饋的, 機會就有. : 推 asdfghjklasd:問題你想拿學分還要他簽名.. 03/18 15:36 : → gogohata:thread呆太久跟deadlock情況不一樣吧 03/18 15:40 : ※ 編輯: ggg12345 來自: 114.43.229.178 (03/18 15:56) : → Lordaeron:WL的thread stuck只表示它的THREAD停很久,致於哪個 03/18 16:07 : → Lordaeron:thread為何停這麼久,要看寫的人在寫什麼.跟WL無關. 03/18 16:07 : → Lordaeron:簡單的說,你愛寫一個SLEEP/WAIT 100分鐘的,WL也管不著 03/18 16:25 : 推 luciferii:沒用過WebLogic但是看一行訊息就能斷古論今,不愧是教授 03/19 17:03 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.34.160.27