今天早上有一次日志轮换,apache 错误日志中的最后一行是:
[error] (9)Bad file descriptor: apr_socket_accept: (client socket) apache2: Syntax error on line 250 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/alias.load: Cannot load /usr/lib/apache2/modules/mod_alias.so into server: /usr/lib/apache2/modules/mod_alias.so: failed to map segment from shared object: Cannot allocate memory
Run Code Online (Sandbox Code Playgroud)
此后 Apache 无法自动重新加载。大约一个小时后,当我开始查看这个问题时,我只是重新启动了 apache,一切都很好。它确实在新日志文件中留下了警告:
[warn] pid file /var/run/apache2.pid overwritten -- Unclean shutdown of previous Apache run?
Run Code Online (Sandbox Code Playgroud)
这是什么意思?我该如何纠正出现的问题?
(Apache/2.2.22 (Debian))
编辑 或者如果这不是可以修复的问题,是否有一种方法可以让 apache 在放弃之前自动重新加载 x 次(例如带有节点的 pm2)?
无法分配共享内存是一种特殊的问题。这并不意味着整个系统内存不足,而是意味着您已经达到了管理共享内存分配的限制之一。
两个相关的 sysctl 是kernel.shmmax
(这是单个共享内存段可以有多大的限制,以字节kernel.shmall
为单位)和(这是可以分配给系统的共享内存总量,以字节为单位)。用于grep Shmem /proc/meminfo; cat /proc/sys/kernel/shmall
可视化这些金额。
通过比较与 的线可以判断是否shmall
被击中。如果它们大约相等,那么您已经达到了系统范围的共享内存限制,并且需要增加(或停止正在使用共享内存的某些内容)。否则,您可能需要增加到比失败的进程想要使用的更大的值。Shmem
/proc/meminfo
/proc/sys/kernel/shmall
kernel.shmall
kernel.shmmax
归档时间: |
|
查看次数: |
15740 次 |
最近记录: |