簡介
但由於使用人數及場景還不是很充分,仍有一些隱藏的問題,使用中要評估到該風險。
注:權威資訊請以官方為主。
win部署tarsnode發布服務失敗
自v2.4.2以來,tars開始提供了較好地支援windows系統功能。
但在windows部署tarsnode後,發布服務總是失敗,顯示的錯誤原因如下:
剛開始找了一圈沒找到原因,我還查了原始碼把原始碼改了:
注釋了如圖中的替換字串的行,結果,上面的問題是解決了,但又來了個新問題:
tars_path\\tarsnode\util\busybox.exe tar xzfv c:\windows\system32\tars_path\tarsnode\data\tmp\download\batchpatchingload\demo\demo.tgz -c c:\windows\system32\tars_path\tarsnode\data\tmp\download\batchpatching\demo, error!
由此注意到,這問題的根本原因可能在於路徑。
為什麼是c:/windows/system32
呢?
而且也沒有理由建立乙個tars_path
的目錄。
檢視了tarsnode原始碼,對於win系統,它會讀取basepath.win
等相關配置。
又諮詢了tars開發人員,最終通過增加win配置解決了這個問題,步驟如下:
進入web介面-運維管理-模板管理
basepath.win=c:\tars-install\tars\tarsnode\data # 根據tarsnode實際安裝路徑填寫,下同
datapath.win=c:\tars-install\tars\tarsnode\data
重啟win節點機tarsnode即可
此時,服務的路徑就是c:/tars-install/tars/tarsnode/data
了。
另外,如果win發布的應用依賴動態庫的話,也需要把庫提前放到對應路徑下,如:c:/windows/system32/
。
登入web後看不到服務
假期歸來,開始工作,開啟web,登入後發現了奇怪的一幕:
趕緊執行一系列操作:
結論:
重啟裝置後dcache服務啟動失敗
在dcache正常執行時,如果突然掉電或其他原因導致裝置重啟,在重啟dcache服務時,都可能發現以下資訊:
這是因為dcahce在首次執行時建立了shmkey相關的dat檔案,而突然重啟時,該檔案沒有刪除,再次啟動就會失敗。
這時,需要先關閉dcache服務,然後刪除dat檔案,最後再重啟服務就可以了。
啟動dcache服務時提示shmkey已經存在
如果已經建立過該key,就會出現這個錯誤。
可以通過ipcs
命令檢視所有的shmkey:
確認已經存在的key沒有使用,可以使用ipcrm -m
把它刪除:
然後再重啟dcache服務即可。
win下tars服務發布失敗
一般情況下,是不會有問題的。
這裡單獨寫win下發布失敗,是因為在linux下,是可以直接替換乙個正在執行的程序的。但是windows下這樣的操作會失敗,因為檔案忙。
所以在發布win下服務時,可以先把正在執行的服務關閉,再發布即可。
dcache呼叫getmkvbatch介面失敗
服務程式中呼叫getmkvbatch介面查詢mkv模組的批量資料時,可能會遇到返回的錯誤碼為-25的錯誤,檢視模組的日誌,如下:
2020-11-02 16:42:18|139942734829312|debug|mkcacheimp::getmkvbatch recv : 1|333333|*|status!=2&status!=3
2020-11-02 16:42:18|139942734829312|debug|get value size = 2, ret = 12
2020-11-02 16:42:18|139942734829312|error|mkcacheimp::getmkvbatch exception: require field not exist, tag: 11 headtype: 1, headtag: 1, mainkey = 333333
提示,查詢的字段不存在。
這時,很可能是建立mkv時建立的資料結構與**中要查詢的資料結構不一致造成的。建議檢視**,把查詢請求的所有欄位與模組的所有字段對比。
如果確認無誤,仍然報錯,可以嘗試重啟mkv模組。
Tars框架執行緒TC Thread的使用
開源庫tars,本文參考官方示例對封裝的執行緒tc thread進行實踐。封裝類 testthread 標頭檔案 pragma once include tars util include util tc thread.h using namespace tars namespace leslief...
Python 中 and 和 or 的使用
and python 中的and 從左到右計算表示式,若所有值均為真,則返回最後乙個值,若存在假,返回第乙個假值。or or 也是從左到有計算表示式,返回第乙個為真的值。文字可能有些繞,可以看下面這張圖 也就是說 x or y 的值 只可能是x或y x為真就是x,x為假就是y x and y 的值 ...
shell中的 , 和 的使用
假設我們定義了乙個變數為 file dir1 dir2 dir3 my.file.txt 可以用 分別替換得到不同的值 刪掉第乙個 及其左邊的字串 dir1 dir2 dir3 my.file.txt 刪掉最後乙個 及其左邊的字串 my.file.txt 刪掉第乙個 及其左邊的字串 file.txt...