我在oracle、jboss、apache的linux环境下中遇到过"No space left on device"的错误,开始的时候以为是磁盘空间不够,但是发现很多时候,并不是这样,是因为系统的信号量不够用了
# ipcs -s
______________________________ Semaphore Arrays ______________________________
key semid owner perms nsems
0x00000000 19234816 oraclerac1 600 1
0x00000000 19267585 oraclerac1 600 1
0x00000000 19300354 oraclerac1 600 1
0x00000000 19398659 oraclerac1 600 1
0x00000000 19431428 oraclerac1 600 1
0x00000000 19464197 oraclerac1 600 1
0x00000000 19562502 oraclerac1 600 1
用这行命令删除所有的信号量即可:ipcs -s | grep nobody | perl -lane 'print `ipcrm sem $F[1]`'
当然也可以修改信号量的配置,etc/sysctl.conf,修改kernel.sem参数即可,那么我想说的是为什么要修改信号量,信号量是什么,如何设置?
为什么?
因为Semaphore是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。
是什么?
Semaphore分为单值和多值两种,前者只能被一个线程获得,后者可以被若干个线程获得。假设停车场只有三个车位,一开始三个车位都是空的。这时如果同时来了五辆车,看门人允许其中三辆不受阻碍的进入,然后放下车拦,剩下的车则必须在入口等待,此后来的车也都不得不在入口处等待。这时,有一辆车离开停车场,看门人得知后,打开车拦,放入一辆,如果又离开两辆,则又可以放入两辆,如此往复。在这个停车场系统中,车位是公共资源,每辆车好比一个线程,看门人起的就是信号量的作用,因此信号量的特性如下:信号量是一个非负整数(车位数),所有通过它的线程(车辆)都会将该整数减一(通过它当然是为了使用资源),当该整数值为零时,所有试图通过它的线程都将处于等待状态。在信号量上我们定义两种操作: Wait(等待) 和 Release(释放)。 当一个线程调用Wait(等待)操作时,它要么通过然后将信号量减一,要么一直等下去,直到信号量大于一或超时。Release(释放)实际上是在信号量上执行加操作,对应于车辆离开停车场,加操作实际上是释放了由信号量守护的资源
如何设置?
查看kernel.sem查看当前设置:#cat /proc/sys/kernel/sem,4个参数分别对应:SEMMSL、SEMMNS、SEMOPM、SEMMNI这四个核心参数,
SEMMSL :用于控制每个信号集的最大信号数量,建议将 SEMMSL 设置为参数文件中的最大 PROCESSES或Thread实例参数的设置值再加上 10。
SEMMNS:用于控制整个 Linux 系统中信号(而不是信号集)的最大数,建议将 SEMMNS 设置为:系统中每个PROCESSES或Thread实例参数设置值的总和,加上最大 PROCESSES或Thread值的两倍,最后根据系统中 中间件或数据库的数量,每个加 10 。
SEMOPM: 内核参数用于控制每个 semop 系统调用可以执行的信号操作的数量。一个信号集能够拥有每个信号集中最大数量的SEMMSL 信号,因此建议设置 SEMOPM 等于SEMMSL ,建议将SEMOPM 的值设置为不少于PROCESSES或Thread最小值 。
SEMMNI :内核参数用于控制整个 Linux 系统中信号集的最大数量。建议将 SEMMNI 的值设置为不少于PROCESSES或Thread的最小值。
分享到:
相关推荐
最近这两天登陆服务器,发现用 wget 下载文件的时候提示“No space left on device”,而且连使用 tab 键进行补全时也会提示该错误。 之前遇到过一次这种问题,是由于磁盘空间被占满了,导致无法创建新文件。正常...
解决docker报错Docker no space left on device
Ubuntu 18 Docker run出现no space left on device错误的解决.rar
报Docker no space left on device 如何解决?
我用的阿里云的CentOS服务器,用的nginx+apache,最近启动nginx报28:no space left on device的错误,就是磁盘满了 一:解决 1、使用命令:df -lk 发现果然有个磁盘已满 2、使用命令:du –max-depth=1 -h 查找大...
Linux下面接4个USB Camera 出现:VIDIOC_STREAMON: No space left on device,新patch解决了这个问题,欢迎下载!
解决案例一: 今天公司服务器上所有的网站都出现问题,有的打开没有数据,有的直接是...打开log日志一看,问题出现了Can’t start server: can’t create PID file: No space left on device; df -h看了一下磁盘,500
主要介绍了mysql启动失败不能正常启动并报错Can't start server: can't create PID file: No space left on device问题解决方法,需要的朋友可以参考下
[Fri Aug 15 10:54:31 2008] [emerg] (28)No space left on device: Couldn't create accept lockdf一下发现不是磁盘空间的问题。Google了一下就找到了解决方案,原来是系统的信号量(?)不够用了。
主要介绍了linux No space left on device由索引节点(inode)爆满引发500问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
[Fri May 20 18:07:23 2011] [crit] (28)No space left on device: mod_rewrite: could not create rewrite_log_lock Configuration Failed [Fri May 20 18:08:22 2011] [crit] (28)No space left on device: mod_...
Apache启动报错No space left on device: AH00023错误可能是进程导致了,虽然小编不知道什么原因但网上提供的解决办法确实是可以解决我们的问题,下面来看看。 对于这类错误是因为linux系统的ipc信号量造成的,...
perror 28 Error code 28: No space left on device SQL语句执行错误:SELECT title,gid FROM blog_blog WHERE date < 1246200383 and hide = ‘n’ and type=’blog’ ORDER BY date DESC LIMIT 1 Error writing...
3D的unet CNN网络,用于3D图像的分割。效果还是不错的