我遇到了mod_python和Apache的问题,我很确定我知道问题是什么,但是我想要一点保证。 我现在有一个情况,我正在与一个非常小的VM只有256M的RAM工作。 现在MySQL和Apache运行得相当好,一切都很好,直到我开始交换,我显然希望尽可能避免交换。 有了那么小的内存,虽然这是不可能的。 我select每天重新启动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).
我的初始虽然是缺乏信号量,但似乎并非如此。 至less我以前用来规避这种情况的技巧至今还没有奏效。 我已经看到与使用mod_python的人类似的问题,但我没有发现很多的实际修复方法。 我的重启导致这个,或者这只是mod_python是越野车? 谢谢!
当我的笔记本电脑反复重启Apache时,我遇到了类似的问题(对我来说,重启了40次)。 我发现的唯一解决scheme是完全重新启动计算机。 当然,我的笔记本电脑有2GB内存和比你的服务器多得多的磁盘空间,所以你可能会更快地遇到这个问题…基本上,我会避免重启Apache多次,而无需完全重启服务器。
消除不再使用的泄漏信号量
ipcs -s | perl -ane '/^0x00000000/ && `ipcrm -s $F[1]`'
增加可用的信号量
echo “kernel.sem = 512 32000 100 512″ >> /etc/sysctl.conf; sysctl -p
谷歌search,我发现这个解决scheme :
您实际上需要增加系统上的SysV信号量。
我使用(在/etc/sysctl.conf中):
kernel.sem = 512 32000 100 512
(通过运行sysctl -p来设置这个文件中的选项)。
BTW。 自引入WSGI以来, mod_python
已经过时了。 大多数现代应用程序可以使用mod_wsgi
运行。
我会假设这是在一个Linux系统上完成的。
我只是想知道你是否可能看到一些共享内存问题以及信号量? 当apache通过kill -9被杀死的时候,我已经遇到了这种情况。
发生这种情况时,是否使用以下命令检出了共享内存区域的状态:ipcs -a这将显示信号量,消息队列和共享内存的当前使用情况。 这可能会为您提供有关该问题的更多信息。
如果要使用ipcrm命令删除旧的信号量或共享内存区域(实际上请参阅手册页以获取所需的特定选项),则实际上可以执行此操作。
现在我不记得了,但是我记得在Linux中修改信号量和共享内存参数是比较容易的。
那么只是对你的问题的一些想法。 希望能帮助到你。