案例说明:

KingbaseES V8R3集群在部署时需要配置与进程间通讯(IPC)相关的内核参数,如果缺失配置或配置错误,kingbasecluster服务在启动过程中将因为内核参数配置错误导致启动失败。

适用版本:

KingbaseES V8R3

一、官方部署建议配置

  • 共享内存

    共享存储区(Share Memory)是Linux系统中通信速度最高的通信机制,因为数据不需要在客户机和服务器端之间复制,数据直接写到内存,不用若干次数据拷贝,所以这是最快的一种IPC。

    系统内核相关配置:

    kernel.shmmax :定义了共享内存段的最大尺寸(以字节为单位)
    kernel.shmall :表示系统一次可以使用的共享内存总量(以页为单位))
    kernel.shmmni:设置系统范围内共享内存段的最大数量,默认4096
  • 信号量

    信号量是一个计数器,可以用来控制多个线程对共享资源的访问。它不是用于交换大批数据,而用于多线程之间的同步。它常作为一种锁机制,防止某进程在访问资源时其它进程也访问该资源。因此,主要作为进程间以及同一个进程内不同线程之间的同步手段。

    系统内核相关配置:

    SEMMNI:系统中信号量的总数最大值
    SEMMSL:每个信号量中信号量元素的最大值
    SEMMNS:系统中所有信号量中的信号量元素的最大值
    SEMOPM: 定义了每个semop系统调用能够操作的最大信号量数

建议配置:

二、shm相关案例

1、集群启动故障:“failed system call shmget(xxx,xxx,xxx)”错误。

shmget()函数,该函数用来创建共享内存。如上图所示,shmget函数无法获取到共享的内存空间,进程启动失败,经检查配置shmmax和shmmni参数后,重新启动集群问题解决。

2、集群启动故障:“could not create shared memory segment: No space left on device”错误。

检查发现重新配置kernel.sem参数后,重启系统后问题解决。

3、集群启动故障“could not create shared memory for request size”错误

检查配置kernel.shmmax = 128000000,重启服务器后,kingbasecluster进程启动成功。(物理内存16G)

4、集群启动故障: “shared memory creation failed with error "Invalid argument"错误。

如下图所示,调整shmmax参数后,kingbasecluster进程启动成功。

5、数据库启动故障: “could not open shared memory segment“错误



问题分析:

# 查看数据库进程
[kingbase@node202 bin]$ ps -ef |grep "kingbase -D"
kingbase 4537 1 0 10:03 ? 00:00:00 /home/kingbase/cluster/R6C8/HAC8/kingbase/bin/kingbase -D /home/kingbase/cluster/R6C8/HAC8/kingbase/data # 查看数据库进程访问文件
[kingbase@node202 bin]$ lsof -p 4537|grep shm
kingbase 4537 kingbase mem REG 0,17 8464 34985 /dev/shm/kingbase.499787157 # 查看共享内存对应的临时文件
[kingbase@node202 bin]$ ls -lh /dev/shm
total 96K
-rw------- 1 kingbase kingbase 8.3K Oct 31 10:03 kingbase.499787157 # 查看共享内存目录属性
[kingbase@node202 bin]$ ls -lhd /dev/shm
drwxrwxrwt 2 root root 160 Oct 31 10:03 /dev/shm

问题解决:

从故障现象看,是没有权限访问/dev/shm下的共享内存段对应的文件及/dev/shm目录权限,检查权限,赋予合适的权限。

三、问题总结

对于共享内存配置所导致的故障,可以通过ipcs命令获取共享内存和信号量的应用情况,分析问题产生的原因。

正常内核资源限制和使用:

[root@node101 ~]# ipcs -l

------ Messages Limits --------
max queues system wide = 32000
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 = 256
max semaphores per array = 5010
max semaphores system wide = 641280
max ops per semop call = 5010
semaphore max value = 32767

查看当前系统共享内存和信号量使用:

KingbaseES V8R3集群运维案例---进程内核参数配置集群启动故障的更多相关文章

  1. KingbaseES V8R3集群运维案例之---主库系统down failover切换过程分析

    ​ 案例说明: KingbaseES V8R3集群failover时两个cluster都会触发,但只有一个cluster会调用脚本去执行真正的切换流程,另一个有对应的打印,但不会调用脚本,只是走相关的 ...

  2. KingbaseES V8R3集群运维案例之---用户自定义表空间管理

    ​案例说明: KingbaseES 数据库支持用户自定义表空间的创建,并建议表空间的文件存储路径配置到数据库的data目录之外.本案例复现了,当用户自定义表空间存储路径配置到data下时,出现的故障问 ...

  3. KingbaseES V8R3集群运维案例之---kingbase_monitor.sh启动”two master“案例

    案例说明: KingbaseES V8R3集群,执行kingbase_monitor.sh启动集群,出现"two master"节点的故障,启动集群失败:通过手工sys_ctl启动 ...

  4. KingbaseES V8R3集群运维案例之---cluster.log ERROR: md5 authentication failed

    案例说明: 在KingbaseES V8R3集群的cluster.log日志中,经常会出现"ERROR: md5 authentication failed:DETAIL: password ...

  5. KingbaseES V8R6集群运维案例之---repmgr standby promote应用案例

    案例说明: 在容灾环境中,跨区域部署的异地备节点不会自主提升为主节点,在主节点发生故障或者人为需要切换时需要手动执行切换操作.若主节点已经失效,希望将异地备机提升为主节点. $bin/repmgr s ...

  6. PB 级大规模 Elasticsearch 集群运维与调优实践

    PB 级大规模 Elasticsearch 集群运维与调优实践 https://mp.weixin.qq.com/s/PDyHT9IuRij20JBgbPTjFA | 导语 腾讯云 Elasticse ...

  7. 阿里巴巴大规模神龙裸金属 Kubernetes 集群运维实践

    作者 | 姚捷(喽哥)阿里云容器平台集群管理高级技术专家 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击即可完成下载. 导读:值得阿里巴巴技术人骄傲的是 2019 ...

  8. 集群运维ansible

    ssh免密登录 集群运维 生成秘钥,一路enter cd ~/.ssh/ ssh-keygen -t rsa 讲id_rsa.pub文件追加到授权的key文件中 cat ~/.ssh/id_rsa.p ...

  9. 运维小知识之nginx---nginx配置Jboss集群负载均衡

      codyl 2016-01-26 00:53:00 浏览385 评论0 负载均衡 转自 运维小知识之nginx---nginx配置Jboss集群负载均衡-博客-云栖社区-阿里云https://yq ...

  10. 运维开发笔记整理-URL配置

    运维开发笔记整理-URL配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.URL路由 对于高质量的Web应用来说,使用简洁,优雅的URL的路由是一个非常值得重视的细节.Dja ...

随机推荐

  1. 【Unity3D】动画回调函数、动画事件、动画曲线

    1 动画回调函数 ​ 动画回调函数是指动画在开始时.执行中.结束时回调的函数,主要有:OnStateEnter.OnStateUpdate.OnStateExit.OnStateMove.OnStat ...

  2. U盘安装win7提示缺少所需的CD/DVD驱动器设备驱动程序

    问题: 最近使用U盘启动盘安装win7,系统弹出提示框: 解决方法: U盘别插在usb3.0的口(蓝色),换成一个usb2.0的口就可以了

  3. 我的小程序之旅三:微信小程序登录流程设计

    登录时序图 获取小程序的AppID和AppSecret 一.微信获取登录用户的openId 1.wx.login() { "code": "192038921jkjKHW ...

  4. go build gcc报错 /usr/bin/ld | cannot find -ldl cannot find -lpthread cannot find -lc

    之前一直在kali或者其他ubuntu设备编译sliver, 临时在centos7上编译时报错了 # github.com/bishopfox/sliver/server /usr/local/go/ ...

  5. 多线程系列(八) -ReentrantLock基本用法介绍

    一.简介 在之前的线程系列文章中,我们介绍到了使用synchronized关键字可以实现线程同步安全的效果,以及采用wait().notify()和notifyAll()方法,可以实现多个线程之间的通 ...

  6. 【Android逆向】反调试绕过(nop 绕过)

    1. 这是看雪上的一个题目,要求显示出 it is success https://www.kanxue.com/work-task_read-800648.htm 第三题 2. apk 安装到手机, ...

  7. python模块Configparser读取 ini(cfg,txt)等配置文件

    一个ini文件的组成: 一个ini文件是由多个section组成,每个section中以key=vlaue形式存储数据: 示例 # 安装 pip install ConfigParser # 1.导包 ...

  8. hibernate-delete(Entity)的顺序问题

    hibernate为我们提供了删除直接根据实体参数删除数据的方法: HibernateTemplate().delete(entity); public void delete(final Objec ...

  9. 【Azure App Service】App Service设置访问限制后,使用git clone代码库出现403报错

    问题描述 在App Service中,为App Service配置了访问限制,结果导致在克隆App Service的代码时候,遇见403错误. 问题解答 因为在使用 git clone App Ser ...

  10. 【Azure 应用服务】App Service的运行状况检查功能失效,一直提示"实例运行不正常"

    问题描述 为App Service配置了健康检查,单独访问Health Check Path的路径,返回代码为200.但为什么在App Service的页面上,一直提示"实例运行不正常&qu ...