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"
posted @ 2022-05-12 11:36  花酒锄作田  阅读(961)  评论(0编辑  收藏  举报