Cod*_*oet 21 php apache macos yii
我最近升级到OSX Mavericks,从那时起,我开始在我的开发机器上得到上述错误.代码中没有明显的问题(它是一个自动生成的Yii示例应用程序).作为升级到小牛队的一部分发生的事情是:
从那时起,我在加载和重新加载网站几次之后就遇到了这个问题.发生此错误后,我的Web服务器将继续为localhost上托管的任何其他应用程序返回相同的错误.我必须提到静态网页服务很好.
我见过几个线程关于这一主题.大多数人都指出代码中的问题是文件句柄未正确关闭,从而超过了打开文件限制阈值.我也发现这个线程似乎暗示这可能是一个zend调试器问题.还有针对php 5.2.x提交的错误报告.在这里的帖子之后,我尝试了以下内容:
$ ulimit -a
Run Code Online (Sandbox Code Playgroud)
报道:
open files (-n) 256
Run Code Online (Sandbox Code Playgroud)
也,
sysctl -a | grep files
Run Code Online (Sandbox Code Playgroud)
回报,
kern.maxfiles = 12288
kern.maxfilesperproc = 10240
kern.maxfiles: 12288
kern.maxfilesperproc: 10240
kern.num_files: 3248
Run Code Online (Sandbox Code Playgroud)
另一个有趣的线程建议使用以下方法提高此限制(目前为256):
ulimit -n 1024
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一切,但似乎没有任何工作.问题也不能始终如一地重现.
我想知道使用ulimit -n 1024是否会影响apache,因为从我读过的内容来看,它会影响shell可以打开的文件数量.
任何帮助表示赞赏.
编辑:
apache有一点帮助,直到再次遇到错误.okk*_*ket 17
从http://docs.basho.com/riak/latest/ops/tuning/open-files-limit/#Mac-OS-X无耻地偷走
要检查Mac OS X系统上的当前限制,请运行:
$ launchctl limit maxfiles
Run Code Online (Sandbox Code Playgroud)
最后两列分别是软限制和硬限制.
要调整OS X 10.7(Lion)或更高版本中的最大打开文件限制,请编辑/etc/launchd.conf并根据需要增加这两个值的限制.
例如,要将软限制设置为16384文件,将硬限制设置为32768文件,请执行以下步骤:
验证当前限制:
$ launchctl limit
cpu unlimited unlimited
filesize unlimited unlimited
data unlimited unlimited
stack 8388608 67104768
core 0 unlimited
rss unlimited unlimited
memlock unlimited unlimited
maxproc 709 1064
maxfiles 10240 10240
Run Code Online (Sandbox Code Playgroud)
编辑(或创建)/etc/launchd.conf并增加限制.添加如下所示的行(使用适合您环境的值):
limit maxfiles 16384 32768
Run Code Online (Sandbox Code Playgroud)
保存文件,然后重新启动系统以使新限制生效.重新启动后,使用launchctl limit命令验证新限制:
$ launchctl limit
cpu unlimited unlimited
filesize unlimited unlimited
data unlimited unlimited
stack 8388608 67104768
core 0 unlimited
rss unlimited unlimited
memlock unlimited unlimited
maxproc 709 1064
maxfiles 16384 32768
Run Code Online (Sandbox Code Playgroud)
如果在运行Apache时遇到此问题,则可以配置apache以增加限制:
$ sudo vi /usr/sbin/apachectl
定位:
ULIMIT_MAX_FILES=""
并将此行更改为:
ULIMIT_MAX_FILES="ulimit 4096"
然后:
sudo apachectl restart
这不适用于CLI脚本。但是,直接将ulimit添加到您的~/.bash_profile(或等效项)应该可以达到该目的。
这具有为apache和终端设置特定限制而不会影响其他应用程序的优势。
另外,通过ulimit使用适用于该环境的命令,您应该能够使此方法适用于其他操作系统。
| 归档时间: |
|
| 查看次数: |
19249 次 |
| 最近记录: |