Ubuntu Apache关机-无法';t抓取互斥
由于一些我不知道的原因,Apache正在崩溃 这是崩溃时的apache日志:Ubuntu Apache关机-无法';t抓取互斥,ubuntu,apache2,apache2.4,ubuntu-18.04,Ubuntu,Apache2,Apache2.4,Ubuntu 18.04,由于一些我不知道的原因,Apache正在崩溃 这是崩溃时的apache日志: [Sat Jun 02 02:38:05.196006 2018] [mpm_prefork:emerg] [pid 1122] (43)Identifier removed: AH00144: couldn't grab the accept mutex [Sat Jun 02 02:38:05.196006 2018] [mpm_prefork:emerg] [pid 1116] (43)Identifier re
[Sat Jun 02 02:38:05.196006 2018] [mpm_prefork:emerg] [pid 1122] (43)Identifier removed: AH00144: couldn't grab the accept mutex
[Sat Jun 02 02:38:05.196006 2018] [mpm_prefork:emerg] [pid 1116] (43)Identifier removed: AH00144: couldn't grab the accept mutex
[Sat Jun 02 02:38:05.198767 2018] [mpm_prefork:emerg] [pid 1115] (43)Identifier removed: AH00144: couldn't grab the accept mutex
[Sat Jun 02 02:38:05.199523 2018] [mpm_prefork:emerg] [pid 3924] (43)Identifier removed: AH00144: couldn't grab the accept mutex
[Sat Jun 02 02:38:05.204189 2018] [mpm_prefork:emerg] [pid 1937] (43)Identifier removed: AH00144: couldn't grab the accept mutex
[Sat Jun 02 02:38:05.207362 2018] [mpm_prefork:emerg] [pid 1120] (43)Identifier removed: AH00144: couldn't grab the accept mutex
[Sat Jun 02 02:38:06.057310 2018] [core:alert] [pid 1099] AH00050: Child 1115 returned a Fatal error... Apache is exiting!
[Sat Jun 02 02:38:06.057483 2018] [:emerg] [pid 1099] AH02818: MPM run failed, exiting
最近我在服务器上做的最后一件事是为我的站点安装certbot到通用HTTPS证书。我在使用Apache 2.4.27的Ubuntu 17.10上遇到了相同的错误 这似乎与Apache与操作系统谈论文件锁定有关。当我进入
/etc/apache2/apache2.conf
并将Mutex flock
添加到Mutex部分(靠近ServerRoot部分)时,似乎已经解决了问题
不幸的是,我只能说,这使用flock()函数(系统调用?)来处理文件锁定。
因此,这是一个有点神奇的修复,因为我个人对Apache的文件锁定行为还不太熟悉,无法解释它为什么会起作用,我只能说它起作用是因为Apache崩溃似乎已经停止了,但只是到目前为止。不过,它可能会对您有所帮助,而且风险似乎相当低。您尚未共享完整的日志跟踪。它可以是: [Sun Jul 21 15:49:43 2019][error](12)无法分配内存:fork: 无法派生新进程
这是由于内存不足和apache无法创建新进程造成的。它还取决于您将其配置为fork的进程数。当网站上的流量过大时,就会发生这种情况 虽然肖恩的解决方案是有效的,但我学会了解决这个问题的另一种方法 首先,您应该知道这个问题与在Ubuntu上使用Certbot和SSL证书有关 现在,要在不做任何不确定的事情的情况下解决问题,只需执行以下操作(作为root用户或使用sudo):
/etc/apache2/conf available/mutex file.conf
Mutex文件:${APACHE\u LOCK\u DIR}default
a2enconf互斥文件启用新配置文件
systemctl Restart apache2重新启动Apache
因此,Apache无法找到互斥文件的lock dir 仅仅在
/etc/apache2/apache2.conf
中添加(删除注释)这一行也不起作用。您必须专门创建一个配置文件并启用它。
否则它将无法解决问题。以下步骤对我的情况适用
希望这对某人有所帮助。谢谢您的回复。我会在晚些时候检查这个。会让你随时更新的。你好,肖恩。仅供参考,我用我刚才找到的自己的解决方案回答这个问题。您的参数仍然有效,但请注意避免篡改未知参数。看一看……;)我也有同样的问题,它发生在log rotate事件上。你解决了吗?我添加了所有与错误相关的行。这是一个与Certbot和SSL证书的使用相关的问题。出于这样或那样的原因,一旦您使用SLL证书,
mutex
默认值未被“找到”,您必须手动设置它。使用互斥文件:${APACHE_LOCK_DIR}default
创建一个文件/etc/apache2/conf available/mutex file.conf
,并启用它,效果很好。我刚刚将互斥文件更新为posixsem,看起来效果不错。需要更多的测试。但是,他说“如果进程中持有互斥锁的线程发生故障,信号量所有权将无法恢复,从而导致Web服务器挂起。”我不理解这一点。你对此有什么想法吗?谢谢你的解决方案。请重新检查您的第2步,因为它似乎是一个打字错误。我不得不使用a2enconf互斥文件
(没有conf)。@icasimpan抱歉“吹毛求疵”。。。这可能是个错误,但我不会把它归类为打字错误。打字错误——至少用外行的术语来说——只是拼写错误,主要是出于匆忙,有时是出于对实际拼写的了解——通常是偶然的,而不是校对。