Memory management 需要一次:无法分配内存
我有一个非常“非传统”的设置,如下所示: 我有一台运行Ubuntu Desktop 12.10的VMware虚拟机,网络设置为桥接。安装在虚拟机内部的是nginx、php-fpm、php-cli和MySQL。PHP是5.4.10 我有一个文件夹,其中包含我正在主机(Windows 7)中处理的应用程序的所有文件。然后,此文件夹作为网络共享可用 然后,虚拟机通过samba将windows共享装载到一个目录中。这个目录然后由nginx和php-fpm提供服务。到目前为止,一切进展顺利 我有一个通过PHPCLI运行的脚本来帮助我构建和处理一些文件。以前,此脚本在我的windows主机上运行良好。然而,当我在Ubuntu虚拟机中运行它时,它似乎抛出了Memory management 需要一次:无法分配内存,memory-management,php,Memory Management,Php,我有一个非常“非传统”的设置,如下所示: 我有一台运行Ubuntu Desktop 12.10的VMware虚拟机,网络设置为桥接。安装在虚拟机内部的是nginx、php-fpm、php-cli和MySQL。PHP是5.4.10 我有一个文件夹,其中包含我正在主机(Windows 7)中处理的应用程序的所有文件。然后,此文件夹作为网络共享可用 然后,虚拟机通过samba将windows共享装载到一个目录中。这个目录然后由nginx和php-fpm提供服务。到目前为止,一切进展顺利 我有一个通过P
无法分配内存的错误。奇怪的是,它也是偶发的,并不是一直都在发生
user@ubuntu:~$ sudo /usr/local/php/bin/php -f /www/app/process.php
Warning: require_once(/www/app/somecomponent.php): failed to open stream: Cannot allocate memory in /www/app/loader.php on line 130
Fatal error: require_once(): Failed opening required '/www/app/somecomponent.php' (include_path='.:/usr/local/php/lib/php') in /www/app/loader.php on line 130
我已检查并确认以下事项:
/www/app/somecomponent.php
肯定存在
/www
以及其中所有文件和子目录的权限设置为对所有者、组和其他人执行和读写
- 我在阅读后关闭了APC,以查看APC是否是原因,但这样做后问题仍然存在
php-cli
使用与php-fpm
相同的php.ini
,位于/etc/php/php.ini
中
php.ini
中的memory\u limit
设置为128M
(默认值),这对于应用程序来说似乎足够了
- 即使将内存限制增加到256M,错误仍然会发生
- 虚拟机有2GB内存
我一直在谷歌上搜索导致无法分配内存的错误的原因,但没有发现任何有用的东西。是什么导致了这个问题?原来这是我的windows共享的问题。也许是因为Windows7是一个客户端操作系统,它没有被调整为经常提供大量文件(在我的例子中就是这样)
要修复此问题,请在注册表中设置以下项:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\LargeSystemCache
至1
HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\Size
to3
我已经用这些新设置运行了大约一周,并且在进行更改后没有遇到任何内存分配错误。但是,您的虚拟机本身有多少内存?虚拟机有2GB的内存。其他运行的内容是否占用过多内存?我看不到。交换甚至没有被使用,因为所有正在运行的进程都有足够的内存。在需要somecomponent.php
之前,它做了什么吗?