问题

zabbix-agent在一台centos6.5上启动报错:

cannot allocate shared memory of size 949056: [28] No space left on device
cannot allocate shared memory for collector

检查

# sysctl -a | grep shm
kernel.shmmax =
kernel.shmall =
kernel.shmmni =

kernel.shmmax        单个共享内存段的最大尺寸,单位byte
kernel.shmall           系统可分配共享内存段的最大值,单位是页
kernel.shmmni         共享内存段的最大数量

还可以通过另一个命令查看:

# ipcs -l
------ Shared Memory Limits --------
max number of segments =
max seg size (kbytes) =
max total shared memory (kbytes) =

max number of segments 对应 kernel.shmmni
max seg size (kbytes) 对应 kernel.shmmax (33554432 / 1024 = 32768)
max total shared memory (kbytes) 对应 kernel.shmall (可以计算出页的大小了:8388608 * 1024 / 2097152 = 4096)

解决

下面开始分析问题,通过日志可以看到zabbix-agent需要的交换内存大小是949056,远小于kernel.shmmax(33554432),所以该参数没问题;

用下面的命令可以查看交换内存的分配情况(为方便展示这里是一台正常运行了zabbix-agent的主机):

# ipcs -m
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x6c0105b0 zabbix

在此基础上,统计下交换内存已经被用了多少(回到问题主机):

# ipcs -m | grep '^0x' | awk '{print $5}' | awk '{sum+=$1}END{print sum}'
    

1805120,远小于kernel.shmall(2097152 * 4096) ,所以该参数也没问题;

到这里已经只剩下一个原因,数量被占满了:

# ipcs -m | grep '^0x' | wc -l
    

这时候可以通过 ipcs -m 看看是哪些程序把数量占满了,若有异常可以选择用 ipcrm 释放,都是正常占用的话就选择提高最大数量(这里提高到两倍):

# sysctl -w kernel.shmmni=

若希望重启系统后依旧有效,把该参数写入配置文件:

# /etc/sysctl.conf
kernel.shmmni =

(另两个参数的修改方式是一样的)

over

linux查看与修改交换内存配置(解决zabbix-agent启动报错)的更多相关文章

  1. 解决spring boot启动报错java.lang.NoClassDefFoundError: ch/qos/logback/classic/Level

    解决spring boot启动报错java.lang.NoClassDefFoundError: ch/qos/logback/classic/Level 学习了:https://blog.csdn. ...

  2. ubuntu16.0.4下修改MySQL的data目录之mysqld启动报错

    由于需要更换MySQL的data目录,更改完成后启动报错如下: apparmor="DENIED" operation="mknod" profile=&quo ...

  3. 解决Android AVD启动报错问题

    好不容易从ADT Bundle转为Android Studio的开发环境,一路荆棘,现在又遇到了模拟器的问题,本来直接用真机调试程序会更快些,但是为了模拟多种系统不得不开启AVD. 废话不说,问题和解 ...

  4. 解决Idea项目启动报错:程序包javax.servlet.http不存在

    报错信息 在没有使用maven的时候,web项目从远程仓库获取下以后,起一次启动往往会报错javax.servlet.http程序包找不到,随之而来的java基础包都将不能使用,报错信息如下: 解决方 ...

  5. 启动mysql错误解决方案,学会查看错误日志:mysql.sock丢失,mysqld_safe启动报错

    本人还是个菜鸟,下面是我的经验之谈,能解决一些问题,有不对的地方,敬请斧正. 我的是CentOS6.3+MySQL5.1.57. 重启了一次服务器后,使用> mysql -u root -p登陆 ...

  6. 配置svn,httpd启动报错 Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.

    查看httpd的状态,发现80端口被占用,因为我的nginx的80端口. systemctl status httpd.service  解决: 把Apache的端口该成别的端口 vi /etc/ht ...

  7. zabbix启动报错:Connection to database 'xxx' failed解决方法

    Zabbix 分布式系统监视系统 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通 ...

  8. 【转】linux查看及修改文件权限以及相关

    linux查看及修改文件权限以及相关 查看文件权限的语句: 在终端输入: ls -l xxx.xxx (xxx.xxx是文件名) 那么就会出现相类似的信息,主要都是这些: -rw-rw-r-- 一共有 ...

  9. linux查看及修改文件权限以及相关

    linux查看及修改文件权限以及相关 查看文件权限的语句: 在终端输入: ls -l xxx.xxx (xxx.xxx是文件名)那么就会出现相类似的信息,主要都是这些: -rw-rw-r-- 一共有1 ...

随机推荐

  1. corefx 源码追踪:找到引起 SqlDataReader.ReadAsync 执行延迟的那行代码

    最近遇到一个非常诡异的问题,在一个 ASP.NET Core 2.2 项目中,从 SQL Server 数据库查询 100 条数据记录,会出现 16-22s 左右的延迟.延迟出现在执行 SqlData ...

  2. Java中如何使用非强制类型转换把字符串转换成int类型

    ①强制类型转换代码如下: String string = "123456"; int a,b = 0; @Test public void String2Int1() { //方法 ...

  3. iOS 如何查看APP的jetsamEvent日志

    1.如何在iPhone上查看 设置-通用-分析-分析数据- JetsamEvent+日志 打头的系统日志. 2.如何在Mac 上查看此类分析日志 1.手机链接MAC 2.打开iTunes,点开手机图标 ...

  4. [dev][ipsec] 什么是xfrm

    简介: http://nody-techhome.blogspot.com/2008/09/xfrm-overview.html (没啥用) 内核xfrm.ipsec的流程.写的特别清晰明了. htt ...

  5. python learning 字符串方法

    一.重点掌握的6种字符串方法: 1.join命令 功能:用于合并,将字符串中的每一个元素按照指定分隔符进行拼接 程序举例: seq = ['1','2','3','4'] sep = '+' v = ...

  6. Autofac之实例获取

    通过之前的学习了解了使用Autofac第一步是通过向容器中注册类型,然后从容器中获取类型实例该怎么做呢? 本次主要学习如何在Autofac中获取注册类型实例 Resolve 使用Resolve方法获取 ...

  7. C#文件增删改查

    新建: private void btnnewfile_Click(object sender, EventArgs e) { //创建文件 string fileName = @"C:\T ...

  8. socket通信的遇到的问题1

    /*使用select对fd可读写,格式*/ while(ctrl){ //// FD_ZERO(&readSocketSet); FD_SET(readSocketFd,&readSo ...

  9. Docker Machine批量安装docker host

    Dokcer Machine Docker Machine 可以批量安装和配置 docker host   提高docker的安装效率   同时减少人工安装操作的失误 [root@localhost ...

  10. 10个用于处理日期和时间的 Python 库

    Python本身提供了处理时间日期的功能,也就是datetime标准库.除此之外,还有很多优秀的第三方库可以用来转换日期格式,格式化,时区转化等等.今天就给大家分享10个这样的Python库. 上期入 ...