應(yīng)用后臺進程的意義不同于系統(tǒng)后臺進程,系統(tǒng)后臺進程指的是系統(tǒng)守護進程等,應(yīng)用后臺進程指的是應(yīng)用系統(tǒng)中獨立部署的一種進程,一般此類進程大多按功能點劃分部署,一個進程實現(xiàn)一個功能點。
使用后臺進程的優(yōu)缺點:
優(yōu)點:通過后臺進程實現(xiàn)功能的解耦,當(dāng)業(yè)務(wù)需求變更時,只需要找到對應(yīng)功能的進程進行代碼更新即可,且便于版本上線發(fā)布;
缺點:業(yè)務(wù)復(fù)雜且變更頻繁的系統(tǒng),會產(chǎn)生大量的后臺進程,不便于后期維護管理;
以某運營商為例,筆者剛接手生產(chǎn)系統(tǒng)維護時,維護范圍包括2000多的后臺進程維護,但沒有任何的資料,進程的功能用途全都在前輩的腦海里。
1、梳理后臺進程信息
該項工作前期花費筆者大量時間,前期跟局方多次討論后確定可能涉及的項目后,花費數(shù)月的時間將分布在40余臺小機上的進程進程信息并整理入庫。
1 )主要梳理方法通過ps取到所有進程的運行目錄,然后根據(jù)目錄類啟動腳本進行匹配,得到進程目錄、腳本、進程數(shù)量、開發(fā)語言、資源類等部分所需信息形成初步進程列表。
2 )將初步進程列表反饋給局方以及開發(fā)商,協(xié)調(diào)其補充進程信息、業(yè)務(wù)、項目經(jīng)理、網(wǎng)絡(luò)等信息,形成一個較為完備的進程信息并寫入到性能基線庫的process進程信息表,如下;
這是個排雷踩坑的過程,期間發(fā)現(xiàn)各式問題(分享2個常見問題):
1 )期間發(fā)現(xiàn)大量無人認(rèn)領(lǐng)的進程,對于該部分進程只能以現(xiàn)有信息入庫作為存量待補全進程,在后期版本更新中慢慢補充;
2 )同一目錄多個進程多個啟動腳本且腳本之間相互有交集,對于該部分只能仔細(xì)區(qū)分同時協(xié)調(diào)開發(fā)商測試環(huán)境進行確認(rèn);
2、梳理完善進程監(jiān)控
在前期進程信息梳理基本完成后,開發(fā)工具對主機進程進行管理,主要兩個方面:
1 )常駐進程監(jiān)控,同步process表至主機比對主機實際運行進程情況,主要比對進程數(shù)量、生產(chǎn)用戶以及資源使用等情況
2 )定時任務(wù)監(jiān)控,主要與process表數(shù)據(jù)對比,是否存在未經(jīng)授權(quán)或登記的任務(wù);
3、梳理進程用途及責(zé)任人
在初步完成主機進程整理以及監(jiān)控后,由于局點每月有多次上線任務(wù)且均伴有進程上線或更新工作,經(jīng)與局方討論我們開始對進程涉及業(yè)務(wù)、涉及資源(數(shù)據(jù)庫、中間件、網(wǎng)絡(luò)、文件系統(tǒng)等)進行登記及新增進程審核等工作。
存量進程:基于監(jiān)控項梳理責(zé)任人后,分別跟進責(zé)任人確認(rèn)進程功能用途;
新增進程:版本上線前要求開發(fā)側(cè)提交進程信息,介入進程評審管控,上線完成后對實際進程進行檢查;
對于進程管理經(jīng)與局方討論,目前已明確所有進程變更(新增、修改、下線)均要求走進程變更流程,按下圖excel表格提供進程信息提交維護團隊進行評審管理。
評審?fù)ㄟ^后將進程信息更新入庫。
在維護后臺進程過程中,筆者發(fā)現(xiàn)進程故障主要有以下三種情況:
1、進程異常掉線
對于進程異常掉線情況,目前已做bomc監(jiān)控以及異常進程信息入庫等
2、進程僵死
在進程維護中,經(jīng)常會發(fā)現(xiàn)進程狀態(tài)或者日志等均顯示正常,但是進程數(shù)據(jù)未得到處理,這種情況我們將其定義為僵死。該種情況目前處理辦法主要是通過添加業(yè)務(wù)監(jiān)控,發(fā)現(xiàn)數(shù)據(jù)積壓或規(guī)定時間未處理及時告警。目前該種情況筆者及同事未有較為有效的辦法進行處理,歡迎提供意見。
3、處理效率不足
特殊情況下處理效率問題主要是月頭月末關(guān)鍵進程比如各渠道的繳費、停開機等數(shù)據(jù)量監(jiān)控,發(fā)現(xiàn)處理效率不夠時及時擴容進程個數(shù)等。
進程信息梳理完后,標(biāo)志后臺進程已經(jīng)納入維護管理范圍,但并非針對進程的維護到此為止,專業(yè)的維護工程師還可以進一步對后臺進程進行高可用改造及性能優(yōu)化;
1、進程高可用
1 )對進程進行分級,時效性要求沒有那么高,我們目前采用冷備的方式實現(xiàn)進程高可用;
2 ) 對關(guān)鍵、實時性要求較高進程,我們采用分布式部署;
流程說明:
進程調(diào)用中間件來驅(qū)動任務(wù)處理。
中間件調(diào)用zookeeper獲取鎖,如果獲取失敗,則等待一定時間,再次嘗試。
獲取鎖成功后,查詢數(shù)據(jù),將取出的數(shù)據(jù)狀態(tài)修改為處理中。
中間件調(diào)用zookeeper釋放鎖。
邏輯處理。
2、數(shù)據(jù)源高可用
考慮當(dāng)出現(xiàn)數(shù)據(jù)庫單節(jié)點故障時,支持進程failover自動切換,同時采用LDAP實現(xiàn)數(shù)據(jù)源的統(tǒng)一管理。
1 )在所有進程主機上配置優(yōu)先使用ldap獲取tnsname
) 將tnsname配置為支持failover自動切換
3、進程的分類分機器部署
為了方便進程的管理,我們按進程所屬業(yè)務(wù)分類,將一類業(yè)務(wù)的進程都集中部署到指定的幾臺機器,提升可維護性。
目前共計部署有54臺進程主機,共計分16類業(yè)務(wù)主要包括集團業(yè)務(wù)、工單發(fā)送、后臺批量、短信等
4、后臺進程之守護進程
后臺進程的守護進程是指通過定時任務(wù)的方式定時探測后臺進程狀態(tài)是否存活,如狀態(tài)異常則立即重啟后臺進程。
使用守護進程的優(yōu)點是異常自愈,缺點是異常處理不夠健壯的進程,出現(xiàn)故障時容易反復(fù)掉線。守護進程反復(fù)重啟,可能會掩蓋掉進程的監(jiān)控告警,不便于運維人員及時發(fā)現(xiàn)異常。
因此筆者維護的系統(tǒng)一般在開發(fā)商修復(fù)過程中使用,其他情況不推薦使用守護進程。
1、后臺進程的批量啟停,批量啟停筆者分了兩種場景
1 )按機器全停,該場景適用于大型割接,局點業(yè)務(wù)全停
2 )部分資源割接,涉及指定進程,該部分通過process表配置啟停任務(wù)程序自動處理;
2、數(shù)據(jù)源切換
配置進程failover自動切換,同時采用LDAP實現(xiàn)數(shù)據(jù)源的統(tǒng)一管理
3、平臺查詢功能
目前可以通過自動化平臺查詢各進程相關(guān)信息等
后臺進程作為應(yīng)用系統(tǒng)中的一種類型,維護思路與中間件等其它應(yīng)用大同小異。由于筆者維護系統(tǒng)的特殊性,后臺進程非常多,且變更頻繁。在初期維護過程中走了不少彎路,特此總結(jié)下經(jīng)驗分享給大家。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/130107.html
摘要:誕生之初,是單線程的。當(dāng)接收到服務(wù)端的響應(yīng)之后,便通過回調(diào)函數(shù)執(zhí)行之后的操作。沖鋒基于事件驅(qū)動。擁有攔截請求消息推送靜默更新地理圍欄等服務(wù)??刂茣r處于兩種狀態(tài)之一終止以節(jié)省內(nèi)存監(jiān)聽獲取和消息事件。支持的所有事件五銷毀瀏覽器決定是否銷毀。 這次體驗一種新的博客風(fēng)格,我們長話短說,針針見血。 showImg(https://segmentfault.com/img/remote/14600...
摘要:宏巍電商軟件是在阿里體系內(nèi)使用他們的,然后在上用多進程做的集群,端和接口系統(tǒng)都是使用語言實現(xiàn)的。宏巍電商軟件架構(gòu)我們嘗試過很多方法來進行線程狀態(tài)的監(jiān)控,比如開始時使用等工具來讀取的狀態(tài),同時也嘗試用過的,但都不能滿足電商產(chǎn)品性能監(jiān)控需求。 宏巍軟件 許向 大家好,我是上海宏巍信息技術(shù)有限公司(簡稱:宏巍軟件)的許向,宏巍軟件成立于2005年,是一家以電商ERP軟件開發(fā)為主的高新技術(shù)科技...
摘要:由于隔離的進程獨立于宿主和其它的隔離的進程,因此也稱其為容器。鏡像實際是由多層文件系統(tǒng)聯(lián)合組成。容器可以被創(chuàng)建啟動停止刪除暫停等。容器的實質(zhì)是進程,但與直接在宿主執(zhí)行的進程不同,容器進程運行于屬于自己的獨立的命名空間。 Docker簡介 Docker 使用 Google 公司推出的 Go 語言 進行開發(fā)實現(xiàn),基于 Linux 內(nèi)核的 cgroup,namespace,以及 AUFS ...
摘要:使用或者時,調(diào)用設(shè)置優(yōu)先級,否則仍然會降低程序響應(yīng),因為默認(rèn)的優(yōu)先級和主線程相同。使用處理工作線程結(jié)果,而不是使用或者來阻塞主線程。目錄介紹 1.ANR簡單介紹 2.ANR發(fā)生場景 3.ANR發(fā)生的原理 4.ANR有哪些具體案例 5.ANR具體如何分析 6.解決方案 7.ANR問題解答 好消息 博客筆記大匯總【16年3月到至今】,包括Java基礎(chǔ)及深入知識點,Android技術(shù)博客,P...
閱讀 1459·2023-01-11 13:20
閱讀 1815·2023-01-11 13:20
閱讀 1267·2023-01-11 13:20
閱讀 2006·2023-01-11 13:20
閱讀 4227·2023-01-11 13:20
閱讀 2885·2023-01-11 13:20
閱讀 1489·2023-01-11 13:20
閱讀 3814·2023-01-11 13:20