linux設定訊號量系統引數
阿新 • • 發佈:2022-05-12
前言
訊號量是IPC(程序間通訊)機制的一種,用於協調多個程序或執行緒對共享資料的讀寫操作,本質上是一個計數器。類似於鎖,主要用於保護共享資源,控制同時訪問資源的程序數。
訊號量只允許呼叫者對它進行等待訊號和傳送訊號操作。
訊號量集指的是訊號量的集合,即多個訊號量組成的集合,可以同時控制多種資源的分配問題。
更具體的內容涉及linux系統程式設計,如有興趣可查閱相關資料。
設定場景:db2資料庫伺服器有的庫表能連,有的庫表訪問異常,基本確定資料沒損壞,懷疑是系統訊號量不夠用
- 系統版本:centos 7
步驟
- 檢視系統的訊號量設定
cat /proc/sys/kernel/sem # 250 32000 32 128
- 第一列:250,SEMMSL,表示每個訊號量集的最大訊號量數目
- 第二列:32000,SEMMNI,表示系統範圍內的最大訊號量數目
- 第三列:32,SEMOPM,表示一個
semop
操作能呼叫的最大訊號量數目 - 第四列:128,SEMMNS表示系統範圍內的最大訊號量集數目
- 檢視系統已使用訊號量集數目
ipcs -s | wc -l
- 如果已經超過128,或者在128附近,就要稍微調高點了。此處為臨時設定,重啟後失效。可以修改
/etc/sysctl.conf
檔案進行固化。
# 設定訊號量集數目為500 # 一次呼叫的最大訊號量數目和訊號量集內最大訊號量數設定相等 # 系統最大訊號量數目設定為 250 * 500 = 125000 sysctl -w kernel.sem="250 125000 250 500"