linux查看与修改交换内存配置(解决zabbix-agent启动报错)
问题
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启动报错)的更多相关文章
- 解决spring boot启动报错java.lang.NoClassDefFoundError: ch/qos/logback/classic/Level
解决spring boot启动报错java.lang.NoClassDefFoundError: ch/qos/logback/classic/Level 学习了:https://blog.csdn. ...
- ubuntu16.0.4下修改MySQL的data目录之mysqld启动报错
由于需要更换MySQL的data目录,更改完成后启动报错如下: apparmor="DENIED" operation="mknod" profile=&quo ...
- 解决Android AVD启动报错问题
好不容易从ADT Bundle转为Android Studio的开发环境,一路荆棘,现在又遇到了模拟器的问题,本来直接用真机调试程序会更快些,但是为了模拟多种系统不得不开启AVD. 废话不说,问题和解 ...
- 解决Idea项目启动报错:程序包javax.servlet.http不存在
报错信息 在没有使用maven的时候,web项目从远程仓库获取下以后,起一次启动往往会报错javax.servlet.http程序包找不到,随之而来的java基础包都将不能使用,报错信息如下: 解决方 ...
- 启动mysql错误解决方案,学会查看错误日志:mysql.sock丢失,mysqld_safe启动报错
本人还是个菜鸟,下面是我的经验之谈,能解决一些问题,有不对的地方,敬请斧正. 我的是CentOS6.3+MySQL5.1.57. 重启了一次服务器后,使用> mysql -u root -p登陆 ...
- 配置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 ...
- zabbix启动报错:Connection to database 'xxx' failed解决方法
Zabbix 分布式系统监视系统 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通 ...
- 【转】linux查看及修改文件权限以及相关
linux查看及修改文件权限以及相关 查看文件权限的语句: 在终端输入: ls -l xxx.xxx (xxx.xxx是文件名) 那么就会出现相类似的信息,主要都是这些: -rw-rw-r-- 一共有 ...
- linux查看及修改文件权限以及相关
linux查看及修改文件权限以及相关 查看文件权限的语句: 在终端输入: ls -l xxx.xxx (xxx.xxx是文件名)那么就会出现相类似的信息,主要都是这些: -rw-rw-r-- 一共有1 ...
随机推荐
- tomcat多实例
//结合博主之前的安装tomcat的博文一起看,tomcat多实例就是在不同路径启动多个tomcat,然后在本机不同端口启动 [root@ycj ~]# cd /usr/local/src/ [roo ...
- WordCount测试项目小结
一.本文对应项目GitHub地址 https://github.com/ReWr1te/WCProject 请参照最新版本(WCProject4.0) 二.项目PSP表格 PSP2.1 PSP阶段 预 ...
- Java 通过getbean取出的类为什么要强转为接口类
这个问题是之前一个同学问我的,这些是我在网上找到的资料,由于我自己也没有完全搞明白,先大概记录一下 首先问题是为什么在bean文件中注入的是实现类,但是通过getBean()取出的时候却必须强制转化为 ...
- Linux下查找某一文件常用的方式
当我们需要在ubuntu中找到之前的某一个文件,该用什么方式呢?用以下命令你就可以快速定位: find / -name "pycharm.sh" 用find查找这个命令,确定查找范 ...
- Python 学习笔记10 函数
函数其实一段带名字的代码段,我们可以根据代码段,重复执行某一段代码段,或者有条件的执行某一段代码段. 将一段代码定义成函数后,我们可以很方便的根据自己的需求,随时调用该代码段.遇到需求变化的时候,只需 ...
- 搭建ionic3-angular5 开发环境并打包成安卓apk包教程
安装node.js 搭建ionic3-angular5 开发环境,首先查看本地电脑是否安装node环境,打开终端,输入 命令: node -v 没有去安装nodejs 网址:http://nodej ...
- 【C++】括号匹配
#include<iostream> #include<cstring> #include<cstdlib> #include<queue> using ...
- 笔试中常用c++接口
1.stack:https://www.cnblogs.com/hdk1993/p/5809161.html 使用该容器时需要包含#include<stack>头文件: 定义stack对象 ...
- U盘挂载指令
相关步骤来自于百度 1.先确定U盘格式,如果是ntfs格式,需要先安装3g-ntfs这个软件支持ntfs格式,以下默认U盘为fat32格式 2.使用fdisk -l 查看分区表,找到u盘的设备号,比如 ...
- 2019/4/22 拓扑排序的高效写法. 模板题HDU1285:确定比赛名次
传送门 Problem Description 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现 ...