1. 程式人生 > 其它 >linux設定訊號量系統引數

linux設定訊號量系統引數

前言

訊號量是IPC(程序間通訊)機制的一種,用於協調多個程序或執行緒對共享資料的讀寫操作,本質上是一個計數器。類似於鎖,主要用於保護共享資源,控制同時訪問資源的程序數。

訊號量只允許呼叫者對它進行等待訊號和傳送訊號操作。

訊號量集指的是訊號量的集合,即多個訊號量組成的集合,可以同時控制多種資源的分配問題。

更具體的內容涉及linux系統程式設計,如有興趣可查閱相關資料。

設定場景:db2資料庫伺服器有的庫表能連,有的庫表訪問異常,基本確定資料沒損壞,懷疑是系統訊號量不夠用

  • 系統版本:centos 7

步驟

  1. 檢視系統的訊號量設定
cat /proc/sys/kernel/sem
# 250        32000   32      128
  • 第一列:250,SEMMSL,表示每個訊號量集的最大訊號量數目
  • 第二列:32000,SEMMNI,表示系統範圍內的最大訊號量數目
  • 第三列:32,SEMOPM,表示一個semop操作能呼叫的最大訊號量數目
  • 第四列:128,SEMMNS表示系統範圍內的最大訊號量集數目
  1. 檢視系統已使用訊號量集數目
ipcs -s | wc -l
  1. 如果已經超過128,或者在128附近,就要稍微調高點了。此處為臨時設定,重啟後失效。可以修改/etc/sysctl.conf檔案進行固化。
# 設定訊號量集數目為500
# 一次呼叫的最大訊號量數目和訊號量集內最大訊號量數設定相等
# 系統最大訊號量數目設定為 250 * 500 = 125000
sysctl -w kernel.sem="250 125000 250 500"