我在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
我用的阿里云的CentOS服务器,用的nginx+apache,最近启动nginx报28:no space left on device的错误,就是磁盘满了 一:解决 1、使用命令:df -lk 发现果然有个磁盘已满 2、使用命令:du –max-depth=1 -h 查找大...
报Docker no space left on device 如何解决?
其中一个常见的问题就是"VIDIOC_STREAMON: No space left on device"错误,这通常表示系统在尝试开启摄像头流传输时遇到了存储设备空间不足的情况。不过,根据描述,这个新的patch已经解决了这个问题,使得用户可以...
在使用Apache web服务器时,有时会遇到错误提示"No space left on device",这可能会导致服务无法正常启动或运行。从描述来看,这个问题并不是由于硬盘空间不足引起的,而是因为系统信号量资源耗尽所造成的。系统...
MySQL数据库在启动时遇到"Can't start server: can't create PID file: No space left on device"的错误,意味着系统在尝试创建MySQL服务的进程ID(PID)文件时遇到了磁盘空间不足的问题。PID文件通常存储在`/var/...
Apache启动报错No space left on device: AH00023错误可能是进程导致了,虽然小编不知道什么原因但网上提供的解决办法确实是可以解决我们的问题,下面来看看。 对于这类错误是因为linux系统的ipc信号量造成的,...
解决案例一: 今天公司服务器上所有的网站都出现问题,有的打开没有数据,有的直接是...打开log日志一看,问题出现了Can’t start server: can’t create PID file: No space left on device; df -h看了一下磁盘,500
在Linux系统中,当用户尝试执行文件操作时遇到"No space left on device"错误,这通常意味着存储空间已满,但实际情况可能更为复杂。有时,即使磁盘空间显示仍有剩余,也可能因为索引节点(Inode)用尽而导致该错误...
在Android开发过程中,可能会遇到“Caused by: android.system.ErrnoException: write failed: ENOSPC (No space left on device)”这样的错误提示。这个错误通常发生在尝试向设备写入数据时,系统报告存储空间不足...
### Apache No space left on device: mod_rewrite: could not create rewrite_log_lock Configuration Failed 在使用Apache Web服务器时,可能会遇到一个常见的错误:“No space left on device: mod_rewrite: ...
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...
文档详细描述了Android的Log系统,包含Android层面和Linux层面。