use*_*654 6 httpd apache-2.2 apache-2.4 cpanel apache2
我的服务器有时会被 apache 中的连接填满,卡在“发送回复”状态,需要我重新启动 apache。大多数情况下这是有效的,但有时我会在尝试重新启动 apache 时收到此错误:
Job for httpd.service failed because the control process exited with
error code. See "systemctl status httpd.service" and "journalctl -xe"
for details.
Run Code Online (Sandbox Code Playgroud)
运行systemctl status httpd.service
或journalctl -xe
按照建议然后带回以下相关信息:
Nov 15 06:24:06 hostname.biologyreporter.com systemd-logind[874]:
Failed to remove runtime directory /run/user/1067: Device or resource busy
Nov 15 06:24:27 hostname.biologyreporter.com restartsrv_httpd[29484]:
[Fri Nov 15 06:24:27.255594 2019] [core:emerg] [pid 29509:tid 47498001208384]
(28) No space left on device: AH00023: Couldn't create the mpm-accept mutex
Nov 15 06:24:27 hostname.biologyreporter.com restartsrv_httpd[29484]:
(28) No space left on device: could not create accept mutex
Nov 15 06:24:27 hostname.biologyreporter.com restartsrv_httpd[29484]:
AH00015: Unable to open logs
Nov 15 06:24:27 hostname.biologyreporter.com systemd[1]:
httpd.service: control process exited, code=exited status=1
Nov 15 06:24:27 hostname.biologyreporter.com systemd[1]:
Failed to start Apache web server managed by cPanel EasyApache.
-- Subject: Unit httpd.service has failed
Run Code Online (Sandbox Code Playgroud)
然后可能需要大约 10 分钟左右的时间让 apache 真正重新启动并且网站再次运行。我不知道为什么它在运行时说“设备上没有剩余空间” df
,例如,返回以下内容(无处是 100% 的空间占用):
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 3973024 0 3973024 0% /dev
tmpfs 3983400 0 3983400 0% /dev/shm
tmpfs 3983400 255296 3728104 7% /run
tmpfs 3983400 0 3983400 0% /sys/fs/cgroup
/dev/sda2 952008348 137586024 766039760 16% /
/dev/sda1 999320 134892 795616 15% /boot
/dev/loop0 3997376 8856 3778808 1% /tmp
tmpfs 796684 0 796684 0% /run/user/0
tmpfs 796684 0 796684 0% /run/user/1022
Run Code Online (Sandbox Code Playgroud)
我一直无法找到有关上述特定错误的原因和解决方案的任何可靠信息
No space left on device: AH00023: Couldn't create the mpm-accept mutex
和Failed to remove runtime directory /run/user/1067: Device or resource busy
我应该怎么做才能解决这个问题,这样这些错误就不会出现,而且 apache 总是可以毫无问题地重新启动?
dzu*_*4uk 11
这很可能是由操作系统的信号量限制引起的,并且 Apache 自身没有正确清理。
这些错误意味着系统中缺少内部进程通信资源,例如信号量或共享内存段。尝试运行 next 以查看是否达到信号量限制并查看结果:
ipcs -s | wc -l
cat /proc/sys/kernel/msgmni
cat /proc/sys/kernel/sem
Run Code Online (Sandbox Code Playgroud)
通过 SSH 或控制台执行以下命令,看看是否有帮助:
ipcs -s | awk -v user=apache '$3==user {system("ipcrm -s "$2)}'
Run Code Online (Sandbox Code Playgroud)
ipcs -s 列出当前使用的信号量。
awk -v user=apache 过滤掉由 apache 用户拥有的那些,下一部分为每个人执行 icprm -s "id" 以删除该信号量。
即整个命令删除 apache 用户拥有的所有信号量
小智 6
虽然 @dzup4uk 的答案似乎能够指出问题是什么,但为了真正解决问题,您必须确保信号量得到清理。
ipcs
命令将显示问题是什么,但为了真正解决问题,您必须进行一些清理,可以使用
ipcrm -a
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9765 次 |
最近记录: |