案例说明:

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. JavaFX的目录结构, 项目创建和发布, 基于JDK11+JavaFX SDK17

    JDK 和 JavaFX SDK 需要使用JDK11, 推荐使用 https://adoptium.net/releases.html JDK11 JavaFX 11 不再是JDK的一部分, 需要单独 ...

  2. Js将字符串转数字的方式

    Js将字符串转数字的方式 Js字符串转换数字方方式主要有三类:转换函数.强制类型转换.弱类型隐式类型转换,利用这三类转换的方式可以有5种转换的方法. parseInt() parseInt()和Num ...

  3. Spring Boot学生信息管理系统项目实战-4.学生管理

    1.获取源码 源码是捐赠方式获取,详细请QQ联系我 :) 2.实现效果 2.1 导出导入模板 2.2 导入学生数据 3.项目源码 只挑重点讲,详细请看源码. 学生管理包含了学生信息的增删改查,这里我只 ...

  4. Oracle ascii函数

    一  简介 Oracle ascii函数用于返回单个字符的数字代号. 二  语法 ASCII( single_character ) 参数说明: 代表只能输入单个字符,如果输入多个,oracle只会返 ...

  5. CSS实现导航栏

    1.知识点 列表 浮动 伪类 背景 文本格式化 盒子模型 2.效果 3.代码 <!DOCTYPE html> <html lang="en"> <he ...

  6. bootstrap与javascript

    1.bootstrap依赖 bootstrap依赖javascript类库,jQuery 下载jQuery,在页面上应用jQuery 在页面上应用bootstrap的js类库 <script s ...

  7. ubuntu 20.4安装docker

    ubuntu 20.4 安装docker 目录 查看版本并升级套件 安装必要软件 添加阿里云的GPG密钥,命令设置存储库 执行安装,查看版本 查看版本并升级套件 cat /proc/version L ...

  8. Xray安全评估工具使用

    xray 是一款功能强大的安全评估工具,主要特性有: 检测速度快.发包速度快; 漏洞检测算法高效. 支持范围广.大至 OWASP Top 10 通用漏洞检测,小至各种 CMS 框架 POC,均可以支持 ...

  9. React native随笔——解决navigation导航栏 android和ios样式不统一

    navigation导航栏存在android和ios样式不统一的问题.Android手机上标题不居中,导航栏与状态栏重合. 解决方法为在navigationOptions中进行如下配置. 一.Andr ...

  10. python中partial用法

    应用 典型的,函数在执行时,要带上所有必要的参数进行调用.然后,有时参数可以在函数被调用之前提前获知.这种情况下,一个函数有一个或多个参数预先就能用上,以便函数能用更少的参数进行调用. 示例pyqt5 ...