热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

记一次semaphore的问题

CDC是我们上包的工具,平时我们会通过Jenkis打rpm包,然后再通过CDC刷这个包,最近某台server经常遇到CDC刷包失败的问题,于是先自己查了一下CDC上包的log,发现

CDC是我们上包的工具,平时我们会通过Jenkis打rpm包,然后再通过CDC刷这个包,
最近某台server经常遇到CDC刷包失败的问题,于是先自己查了一下CDC上包的log,
发现有个报错,错误信息是ERROR: monxpmp can not be started.,于是和CDC
Team一起查了一下,最终原因是当前server的linux信号量满了,下面是检查步骤:
首先明确一下:monxpmp是需要用系统semaphore的,系统semaphore array满了
monxpmp就启动不了了
1.尝试在机器上尝试移除monxpmp信号并重启monxpmp
[[email protected] test]# for semid in `ipcs -s | grep monxpmp | awk '{print $2}'`; do ipcrm -s $semid; done
[[email protected] test]# service monxpmp start
INFO: alertsender has been running...
INFO: snmpd has been running...
INFO: monxpmpagt has been running...
ls: cannot access /opt/web/mon/log/monxpmphtp.log.*: No such file or directory
ERROR: monxpmp can not be started.
INFO: mondatapush is started.
Succeed to enable auto recover check.
[[email protected] test]#
2.查看server信息
[[email protected] test]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.252.25.151 prodhostname.web.com prodhostname
[[email protected] test]# cat /etc/hostname
prodhostname.web.com
[[email protected] test]#
3.查看信号量大小,可以看到信号量满了,系统默认提供为128(132>128是因为有表头)
[[email protected] test]# ipcs -s | wc -l
132
[[email protected] test]# cat /proc/sys/kernel/sem (查看信号量设置方法1)
250 32000 32 128
[[email protected] test]# sysctl -a | grep "kernel.sem = " (查看信号量设置方法2)
kernel.sem = 250 32000 32 128
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.ens192.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"
[[email protected] test]# ipcs -ls (查看信号量设置方法3)
------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 32
semaphore max value = 32767
[[email protected] test]# ipcs -l (查看信号量设置方法4)
------ Messages Limits --------
max queues system wide = 31764
max size of message (bytes) = 8192
default max size of queue (bytes) = 16384
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 18014398509465599
max total shared memory (kbytes) = 18014398442373116
min seg size (bytes) = 1
------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 32
semaphore max value = 32767
[[email protected] test]# ipcs -u (查看信号量使用状况)
------ Messages Status --------
allocated queues = 0
used headers = 0
used space = 0 bytes
------ Shared Memory Status --------
segments allocated 66
pages allocated 7926
pages resident 7926
pages swapped 0
Swap performance: 0 attempts 0 successes
------ Semaphore Status --------
used arrays = 128
allocated semaphores = 128
[[email protected] test]#
4.解决方法一:找不到哪个用户资源申请的话,最简单的办法就是reboot
5.解决方法二:暴力全部释放
[[email protected] test]# for semid in `ipcs -s | awk '{print $2}'`; do ipcrm -s $semid; done
[[email protected] test]#
(释放了之后当时申请信号量的程序不确定会不会出问题,方法不是很好)
6.解决方法三:调高信号量数组,这里调为256
[[email protected] test]# sysctl -w kernel.sem="250 32000 32 256"
kernel.sem = 250 32000 32 256
[[email protected] test]# ipcs -s | wc -l
132
[[email protected] test]#
7.启动monxpmp应用,启动成功
[[email protected] test]# service monxpmp start
INFO: alertsender has been running...
INFO: snmpd has been running...
INFO: monxpmpagt has been running...
ls: cannot access /opt/web/mon/log/monxpmphtp.log.*: No such file or directory
INFO: monxpmp is started.
INFO: mondatapush is started.
Succeed to enable auto recover check.
[[email protected] test]#
8.查看信号量列表,发现monxpmp启动添加成功
[[email protected] test]# ipcs -s
------ Semaphore Arrays --------
key semid owner perms nsems
0x00000000 3768320 root 600 1
0x00000000 3801089 root 600 1
0x00000000 3964930 root 600 1
0x00000000 3997699 root 600 1
0x00000000 2457604 root 600 1
0x00000000 2490373 root 600 1
0x00000000 3440646 root 600 1
0x00000000 3473415 root 600 1
0x00000000 3506184 root 600 1
0x00000000 3538953 root 600 1
0x00000000 3702794 root 600 1
0x00000000 3735563 root 600 1
0x00000000 4161548 root 600 1
0x00000000 4194317 root 600 1
0x00000000 4358158 root 600 1
0x00000000 4390927 root 600 1
0x00000000 4620304 root 600 1
0x00000000 4653073 root 600 1
0x00000000 4816914 root 600 1
0x00000000 4849683 root 600 1
0x00000000 4554772 root 600 1
0x00000000 4587541 root 600 1
0x00000000 5013526 root 600 1
0x00000000 5046295 root 600 1
0x00000000 5210136 root 600 1
0x00000000 5242905 root 600 1
0x00000000 5406746 root 600 1
0x00000000 5439515 root 600 1
0x00000000 5603356 root 600 1
0x00000000 5636125 root 600 1
0x00000000 5799966 root 600 1
0x00000000 5832735 root 600 1
0x00000000 6127648 root 600 1
0x00000000 6160417 root 600 1
0x00000000 6389794 root 600 1
0x00000000 6422563 root 600 1
0x00000000 5996580 root 600 1
0x00000000 6029349 root 600 1
0x00000000 6062118 root 600 1
0x00000000 6094887 root 600 1
0x00000000 6717480 root 600 1
0x00000000 6750249 root 600 1
0x00000000 6324266 root 600 1
0x00000000 6357035 root 600 1
0x00000000 6914092 root 600 1
0x00000000 6946861 root 600 1
0x00000000 6586414 root 600 1
0x00000000 6619183 root 600 1
0x00000000 6651952 root 600 1
0x00000000 6684721 root 600 1
0x00000000 7110706 root 600 1
0x00000000 7143475 root 600 1
0x00000000 7372852 root 600 1
0x00000000 7405621 root 600 1
0x00000000 7569462 root 600 1
0x00000000 7602231 root 600 1
0x00000000 7307320 root 600 1
0x00000000 7340089 root 600 1
0x00000000 8093754 root 600 1
0x00000000 8126523 root 600 1
0x00000000 8355900 root 600 1
0x00000000 8388669 root 600 1
0x00000000 7766078 root 600 1
0x00000000 7798847 root 600 1
0x00000000 7831616 root 600 1
0x00000000 7864385 root 600 1
0x00000000 7897154 root 600 1
... ...
0x00000000 12812412 root 600 1
0x00000000 12845181 root 600 1
0x00000000 12943486 root 600 1
0x00000000 12976255 root 600 1
0x00000000 13140096 root 600 1
0x00000000 13172865 root 600 1
0x50038d9e 13205634 monxpmp 666 1
0x52038d9e 13238403 monxpmp 666 1
0x64038d9e 13271172 monxpmp 666 1
0x4f038d9e 13303941 monxpmp 666 1
9.CDC尝试刷包,成功
参考:
https://zh.wikipedia.org/wiki/%E4%BF%A1%E5%8F%B7%E9%87%8F
https://baike.baidu.com/item/%E4%BF%A1%E5%8F%B7%E9%87%8F
https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/ipcs.html
https://en.wikipedia.org/wiki/Semaphore_(programming)
https://linoxide.com/linux-how-to/semaphore/
https://www.thegeekdiary.com/how-to-change-kernel-semaphore-limits-in-centos-rhel/
附录:
1.ipcs用法
ipcs -a 是默认的输出信息 打印出当前系统中所有的进程间通信方式的信息
ipcs -m 打印出使用共享内存进行进程间通信的信息
ipcs -q 打印出使用消息队列进行进程间通信的信息
ipcs -s 打印出使用信号进行进程间通信的信息
ipcs -t 输出信息的详细变化时间
ipcs -p 输出ipc方式的进程ID
ipcs -c 输出ipc方式的创建者/拥有者,输出ipc各种方式的在该系统下的限制条件信息
ipcs -u 输出当前系统下ipc各种方式的状态信息(共享内存,消息队列,信号)
2.ipcrm用法
ipcrm -M shmkey 移除用shmkey创建的共享内存段
ipcrm -m shmid 移除用shmid标识的共享内存段
ipcrm -Q msgkey 移除用msqkey创建的消息队列
ipcrm -q msqid 移除用msqid标识的消息队列
ipcrm -S semkey 移除用semkey创建的信号
ipcrm -s semid 移除用semid标识的信号





 



推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 本文介绍了响应式页面的概念和实现方式,包括针对不同终端制作特定页面和制作一个页面适应不同终端的显示。分析了两种实现方式的优缺点,提出了选择方案的建议。同时,对于响应式页面的需求和背景进行了讨论,解释了为什么需要响应式页面。 ... [详细]
author-avatar
深厚科学修养的文艺青年
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有