2017-02-03 8 views
0

でコンパイルを実行している場合は、メモリを割り当てることができません:は、私は現在、このコマンドを使用して、旅客のコンパイルを実行しているPHPスクリプトに取り組んでいるPHP

passenger-install-apache2-module --auto 

私はSSHでコマンドを実行すると、それが動作しますPHPからexec()を使用して起動すると、「仮想メモリが使い果たされました:メモリを割り当てることができません」というメッセージが表示されます。

c++ -o buildout/support-binaries/CoreMain.o -Isrc/agent -Isrc/cxx_supportlib -Isrc/cxx_supportlib/vendor-copy -Isrc/cxx_supportlib/vendor-modified -Isrc/cxx_supportlib/vendor-modified/libev -Isrc/cxx_supportlib/vendor-copy/libuv/include -D_REENTRANT -I/usr/local/include -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-long-long -Wno-missing-field-initializers -feliminate-unused-debug-symbols -feliminate-unused-debug-types -fvisibility=hidden -DVISIBILITY_ATTRIBUTE_SUPPORTED -Wno-attributes -ggdb -DHAS_ALLOCA_H -DHAVE_ACCEPT4 -DHAS_SFENCE -DHAS_LFENCE -DPASSENGER_DEBUG -DBOOST_DISABLE_ASSERTS -std=gnu++11 -Wno-unused-local-typedefs -DHASH_NAMESPACE="__gnu_cxx" -DHASH_MAP_HEADER="<hash_map>" -DHASH_MAP_CLASS="hash_map" -DHASH_FUN_H="<hash_fun.h>" -c src/agent/Core/CoreMain.cpp 
virtual memory exhausted: Cannot allocate memory 
rake aborted! 
Command failed with status (1): [c++ -o buildout/support-binaries/CoreMain.o -Isrc/agent -Isrc/cxx_supportlib -Isrc/cxx_supportlib/vendor-copy -Isrc/cxx_supportlib/vendor-modified -Isrc/cxx_supportlib/vendor-modified/libev -Isrc/cxx_supportlib/vendor-copy/libuv/include -D_REENTRANT -I/usr/local/include -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-long-long -Wno-missing-field-initializers -feliminate-unused-debug-symbols -feliminate-unused-debug-types -fvisibility=hidden -DVISIBILITY_ATTRIBUTE_SUPPORTED -Wno-attributes -ggdb -DHAS_ALLOCA_H -DHAVE_ACCEPT4 -DHAS_SFENCE -DHAS_LFENCE -DPASSENGER_DEBUG -DBOOST_DISABLE_ASSERTS -std=gnu++11 -Wno-unused-local-typedefs -DHASH_NAMESPACE="__gnu_cxx" -DHASH_MAP_HEADER="<hash_map>" -DHASH_MAP_CLASS="hash_map" -DHASH_FUN_H="<hash_fun.h>" -c src/agent/Core/CoreMain.cpp] 
/usr/local/rvm/gems/ruby-2.3.3/gems/passenger-5.1.2/build/support/cplusplus.rb:52:in `run_compiler' 
/usr/local/rvm/gems/ruby-2.3.3/gems/passenger-5.1.2/build/support/cplusplus.rb:102:in `compile_cxx' 
/usr/local/rvm/gems/ruby-2.3.3/gems/passenger-5.1.2/build/support/cplusplus.rb:160:in `block in define_cxx_object_compilation_task' 
Tasks: TOP => apache2 => buildout/support-binaries/PassengerAgent => buildout/support-binaries/CoreMain.o 
(See full trace by running task with --trace) 

私は最大8GBのRAMを搭載したサーバーを試しました。/var/log/messagesにはOOMがありませんので、メモリが問題ではないと思います。

exec()のみから実行しているときにこのエラーが発生する理由は何ですか?

+0

スワップがない場合、512MBのようなメモリがほとんどないマシンで問題が発生しました。通常は2GB以上が問題ありません。 8GBの空き容量がありますか? – tadman

+0

はい、2,3,8GBの新しいサーバーをテストし始めました。何もそれにインストールされていません。 – N0Cloud

+0

コンパイル時に乗客は非常に厳しいですが、まだ奇妙に見えます。メモリ使用量を監視するためにインポートするときに['htop'](http://hisham.hm/htop/)のようなツールを実行するとどうなりますか?ほとんどのディストリビューションでインストール可能なパッケージとして入手できます。ここで問題を特定するのに役立つかもしれません。 – tadman

答えて

0

私はついにこの問題を発見しました。 私のPHPスクリプトはWHM(cPanel)プラグインとして実行されており、WHMがスクリプトを実行する前にulimitを設定しているようです。スクリプトはrootで実行されるので、bashを実行する前にulimitを変更するだけでした。

exec("ulimit -m unlimited -v unlimited; bash myscript.sh"); 
関連する問題