以前曾在linux上維護應用服務,但是只是簡單的迭代版本等工作,沒有什麼技術含量。最近部署在linux伺服器上的乙個平台的匯流排程序broker(下面匯流排用broker指代)經常掛掉,由於匯流排負責服務之間通訊,分發訊息給各個應用服務,匯流排一旦掛掉就導致整個平台癱瘓。匯流排程序掛掉需要人工重啟,在沒有找到具體原因前維護起來很不方便,而且往往是使用者先發現才反饋過來,所以先寫乙個守護程序,一旦匯流排掛掉就重啟。網上查了很多資料,總算搞出來了,大體寫一下實現步驟,即是備忘也分享給大家,相互交流。
先說一下大體思路:
1、建立乙個指令碼檔案middle_start,迴圈查詢broker程序是否存在,如果不存在就啟動broker;
2、另外建立乙個啟動指令碼start,啟動middle_start,指定middle_start為後台程序;
3、再建立乙個結束end,先結束守護程序,再結束broker。
第一步的middle_start**如下:
#! /bin/bash主要看紅色部分。sysctl -w net.core.wmem_default=16777216
sysctl -w net.core.wmem_max=16777216
sysctl -w net.core.rmem_default=16777216
sysctl -w net.core.rmem_max=16777216
#program directory path
pro_path
=$pwd
#program name
pro_name
="/broker"
#program path, not need configure.
pro_main
=$pro_path$pro_name
#gnome start program< not need configure.
program_gnome
="gnome-terminal -e \"$pro_main\""
#start method gnome or nohup (eg: gnone-->star_pro=$program_gnome ; nohup-->star_method=$pro_main)
star_method
=$pro_main
export ld_library_path=../../lib:$ld_library_path
while :
dopro_now=`ps aux | grep $pro_main | grep -v grep | wc -l`
if [ $pro_now -lt 1 ]; then
echo "-- start broker --"
$star_method 2>/dev/null 1>&2 &
curtime=`date +"%y-%m-%d %h:%m:%s"`
echo "$curtime $pro_main start" >> $pro_path/tinfo.log
fisleep 5
done
exit 0
第二步的start指令碼如下:
#! /bin/bash第三部的end指令碼也很簡單:./middle_start.sh &
#!/bin/bash完成上面的步驟後,啟動start指令碼,ps查詢broker已經執行,強行kill掉後broker仍然存在,已經是小強般的存在,執行end後broker銷毀。#progress name
pro_name="
middle_start.sh
"brk_name="
broker
"ps -ef|grep $pro_name |grep -v grep|awk '
'|xargs kill
echo
"kill $pro_name done!
"ps -ef|grep $brk_name |grep -v grep|awk '
'|xargs kill -9
echo
"kill $brk_name done
"
應用服務和領域服務
在領域驅動設計中,service有兩種 領域服務和應用服務,單純從它們的定義來看,兩者很容易區分,前者是與業務邏輯密切相關的服務,往往處理複雜的業務請求。後者則是面向應用角度的一些支援功能,與業務本身並無太大關聯。一些典型的應用服務有 傳送電子郵件通知使用者,對密碼進行加密解密等等。在oobbs中,...
web應用服務開發
serverless 架構應該會是未來的乙個新趨勢。得益於我司十幾年前一幫大神資料庫表模型設計的優異,一開始剛進公司的時候,很是驚嘆。通過客戶端配配屬性,乙個查詢頁面和乙個資源實體的屬性控制項頁面就生成好了。每週花十五分鐘閱讀就可以了解最新的 swift 開發進度 okhttp 使用小記 快取和驗證...
web應用服務簡述
動態資源即通過程式 j a php python net 和資料庫 mysql oracle sqlserver 根據業務處理流程動態生成網頁的html,再將html響應給請求 客戶端 http 1.0 1.1 2.0 和html的關係 1.客戶端封裝http請求 httprequest 向服務端發...