![mod_python 与 Apache 故障](https://linux22.com/image/482232/mod_python%20%E4%B8%8E%20Apache%20%E6%95%85%E9%9A%9C.png)
我在使用 mod_python 和 Apache 时遇到了问题,我非常确定我知道问题出在哪里,但我希望得到一些安慰。我目前遇到的情况是,我正在使用非常小型虚拟机,只有 256M RAM。现在 MySQL 和 Apache 运行得相当好,一切都很好,直到我开始使用 swap,这显然是我想尽可能避免的。但是,由于 RAM 太少,这几乎是不可能的。我选择每天几次 cron up 重新启动 MySQL 和 Apache,但是,大约 4-5 天后,我收到设备上没有剩余磁盘空间的消息:
[Mon May 11 06:00:14 2009] [notice] caught SIGTERM, shutting down
[Mon May 11 06:00:20 2009] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Mon May 11 06:00:20 2009] [notice] Digest: generating secret for digest authentication ...
[Mon May 11 06:00:20 2009] [notice] Digest: done
[Mon May 11 06:00:21 2009] [notice] mod_python: Creating 4 session mutexes based on 256 max processes and 0 max threads.
[Mon May 11 06:00:21 2009] [error] (28)No space left on device: mod_python: Failed to create global mutex 1 of 4 (/tmp/mpmtx265021).
我最初的想法是缺少信号量,但事实似乎并非如此。至少我过去用来规避这个问题的技巧到目前为止还没有奏效。我看到使用 mod_python 的人也遇到过类似的问题,但我没有找到太多实际的解决方法。是我的重启导致了这个问题,还是 mod_python 有问题?谢谢!
答案1
我在笔记本电脑上反复重启 Apache 时也遇到过类似的问题(我大概重启了 40 次);我发现的唯一解决方案是完全重启计算机。当然,我的笔记本电脑有 2GB 的 RAM 和比您的服务器多得多的磁盘空间,所以您可能会更快地遇到这个问题……基本上,我会避免在没有完全重启服务器的情况下多次重启 Apache。
答案2
删除不再使用的泄漏信号量
ipcs -s | perl -ane '/^0x00000000/ && `ipcrm -s $F[1]`'
增加可用的信号量
echo “kernel.sem = 512 32000 100 512″ >> /etc/sysctl.conf; sysctl -p
答案3
答案4
我假设这是在 Linux 系统上完成的。
我只是想知道您是否可能看到一些共享内存问题以及信号量问题?当通过 kill -9 杀死 Apache 时,我遇到过这种情况。
发生这种情况时,您是否使用以下命令检查了共享内存区域的状态:ipcs-a 这将显示信号量、消息队列和共享内存的当前使用情况。这可能会为您提供有关问题的更多信息。
实际上,如果您想删除旧的信号量或共享内存区域,您可以使用 ipcrm 命令(请参阅手册页以了解您需要的特定选项)。
我现在记不清了,但我记得在 Linux 中修改信号量和共享内存参数相对容易。
好吧,这只是对你的问题的一些想法。希望对你有帮助。