1

私は次のようなかなり「型破りな」設定をしています。

ネットワークがブリッジに設定されたUbuntuDesktop12.10を実行しているVMware仮想マシンがあります。VM内にインストールされているのは、nginx、php-fpm、php-cli、およびMySQLです。PHPは5.4.10です。

ホスト(Windows 7)で作業しているアプリケーションのすべてのファイルを含むフォルダーがあります。このフォルダは、ネットワーク共有として利用できるようになります。

次に、仮想マシンは、sambaを介してWindows共有をディレクトリにマウントします。このディレクトリは、nginxとphp-fpmによって提供されます。これまでのところ、すべてが正常に機能しています。

いくつかのファイルをビルドして処理するのに役立つ、phpCLIを介して実行するスクリプトがあります。以前は、このスクリプトは私のWindowsホストで正常に機能していました。ただし、cannot allocate memoryUbuntuVMで実行するとエラーが発生するようです。奇妙なことに、それは散発的であり、常に発生するわけではありません。

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.iniいます。php-fpm/etc/php/php.ini

  • memory_limitinphp.ini128M(デフォルト)に設定されています。これはアプリにとって十分と思われます。

  • メモリ制限をに増やした後でも256M、エラーは発生します。

  • VMには2GBのメモリがあります。

cannot allocate memoryエラーの原因を調べるためにグーグルで調べてきましたが、何も役に立ちませんでした。この問題の原因は何ですか?

4

1 に答える 1

0

これは私のWindows共有の問題であることがわかりました。おそらく、Windows 7はクライアントOSであるため、大量のファイルを頻繁に提供するように調整されていません(私の場合はこれが発生しています)。

修正するには、レジストリに次のキーを設定します。

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\LargeSystemCache1

HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\Size3

これらの新しい設定でセットアップを約1週間実行しましたが、変更を行ってからメモリ割り当てエラーは発生していません。

于 2013-01-09T03:27:48.287 に答える