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