Bug(バグ) #1729
openpne:upgrade-from-2 実行時、memory_limit:512M でもメモリリミットオーバーのエラーで中断される
0%
説明
概要¶
openpne:upgrade-from-2 実行時、memory_limit:512M と設定しているにも関わらず
upgrade Processing build_model
時点でメモリリミットオーバーとなり、アップグレードできない。
発生バージョン¶
ソース: 3.6beta7-dev
コンバート対象データ: OpenPNE2.12
エラー内容¶
$ ./symfony openpne:upgrade-from-2 --origin=2.12 >> upgrade Begin upgrading from 2.x >> upgrade Processing build_model PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 35 bytes) in /OPENPNE_DIR/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Core.php on line 679 PHP Stack trace: PHP 1. {main}() /OPENPNE_DIR/symfony:0 PHP 2. include() /OPENPNE_DIR/symfony:37 PHP 3. sfSymfonyCommandApplication->run() /OPENPNE_DIR/lib/vendor/symfony/lib/command/cli.php:20 PHP 4. sfTask->runFromCLI() /OPENPNE_DIR/lib/vendor/symfony/lib/command/sfSymfonyCommandApplication.class.php:76 PHP 5. sfBaseTask->doRun() /OPENPNE_DIR/lib/vendor/symfony/lib/task/sfTask.class.php:97 PHP 6. openpneUpgradeFrom2Task->execute() /OPENPNE_DIR/lib/vendor/symfony/lib/task/sfBaseTask.class.php:68 PHP 7. opUpgrader->execute() /OPENPNE_DIR/lib/task/openpneUpgradeFrom2Task.class.php:83 PHP 8. opUpgradeBuildModelStrategy->run() /OPENPNE_DIR/lib/upgrade/opUpgrader.class.php:137 PHP 9. sfTask->run() /OPENPNE_DIR/lib/upgrade/strategy/opUpgradeBuildModelStrategy.class.php:32 PHP 10. sfBaseTask->doRun() /OPENPNE_DIR/lib/vendor/symfony/lib/task/sfTask.class.php:173 PHP 11. sfDoctrineBuildTask->execute() /OPENPNE_DIR/lib/vendor/symfony/lib/task/sfBaseTask.class.php:68 PHP 12. sfTask->run() /OPENPNE_DIR/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildTask.class.php:169 PHP 13. sfBaseTask->doRun() /OPENPNE_DIR/lib/vendor/symfony/lib/task/sfTask.class.php:173 PHP 14. sfDoctrineBuildFormsTask->execute() /OPENPNE_DIR/lib/vendor/symfony/lib/task/sfBaseTask.class.php:68 PHP 15. sfGeneratorManager->generate() /OPENPNE_DIR/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildFormsTask.class.php:64 PHP 16. sfDoctrineFormGenerator->generate() /OPENPNE_DIR/lib/vendor/symfony/lib/generator/sfGeneratorManager.class.php:113 PHP 17. sfDoctrineFormGenerator->loadModels() /OPENPNE_DIR/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineFormGenerator.class.php:73 PHP 18. Doctrine_Core::loadModels() /OPENPNE_DIR/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineFormGenerator.class.php:602 PHP 19. get_declared_classes() /OPENPNE_DIR/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Core.php:679 Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 35 bytes) in /OPENPNE_DIR/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Core.php on line 679 Call Stack: 0.0005 52776 1. {main}() /OPENPNE_DIR/symfony:0 0.0073 377056 2. include('/OPENPNE_DIR/lib/vendor/symfony/lib/command/cli.php') /OPENPNE_DIR/symfony:37 0.3462 8610208 3. sfSymfonyCommandApplication->run() /OPENPNE_DIR/lib/vendor/symfony/lib/command/cli.php:20 0.3554 8635320 4. sfTask->runFromCLI() /OPENPNE_DIR/lib/vendor/symfony/lib/command/sfSymfonyCommandApplication.class.php:76 0.3556 8635320 5. sfBaseTask->doRun() /OPENPNE_DIR/lib/vendor/symfony/lib/task/sfTask.class.php:97 1.3755 9032500 6. openpneUpgradeFrom2Task->execute() /OPENPNE_DIR/lib/vendor/symfony/lib/task/sfBaseTask.class.php:68 1.3975 9134940 7. opUpgrader->execute() /OPENPNE_DIR/lib/task/openpneUpgradeFrom2Task.class.php:83 1.4709 9796456 8. opUpgradeBuildModelStrategy->run() /OPENPNE_DIR/lib/upgrade/opUpgrader.class.php:137 1.4722 9812360 9. sfTask->run() /OPENPNE_DIR/lib/upgrade/strategy/opUpgradeBuildModelStrategy.class.php:32 1.4732 9818816 10. sfBaseTask->doRun() /OPENPNE_DIR/lib/vendor/symfony/lib/task/sfTask.class.php:173 1.5584 11013564 11. sfDoctrineBuildTask->execute() /OPENPNE_DIR/lib/vendor/symfony/lib/task/sfBaseTask.class.php:68 11.7622 14273648 12. sfTask->run() /OPENPNE_DIR/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildTask.class.php:169 11.7626 14274256 13. sfBaseTask->doRun() /OPENPNE_DIR/lib/vendor/symfony/lib/task/sfTask.class.php:173 11.7633 14275800 14. sfDoctrineBuildFormsTask->execute() /OPENPNE_DIR/lib/vendor/symfony/lib/task/sfBaseTask.class.php:68 11.7934 15115240 15. sfGeneratorManager->generate() /OPENPNE_DIR/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildFormsTask.class.php:64 12.1314 26755632 16. sfDoctrineFormGenerator->generate() /OPENPNE_DIR/lib/vendor/symfony/lib/generator/sfGeneratorManager.class.php:113 12.1314 26755632 17. sfDoctrineFormGenerator->loadModels() /OPENPNE_DIR/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineFormGenerator.class.php:73 12.1319 26756688 18. Doctrine_Core::loadModels() /OPENPNE_DIR/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineFormGenerator.class.php:602 12.3618 33522308 19. get_declared_classes() /OPENPNE_DIR/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Core.php:679
履歴
#1 Minoru Takai が13年以上前に更新
個人的な見解を示しておきます。
openpne:upgrade-from-2 実行時、memory_limit:512M と設定しているにも関わらず
と示されていますが、エラーメッセージでは
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 35 bytes) in /OPENPNE_DIR/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Core.php on line 679
と、「許された 33554432(1024*1024*32)bytes のメモリ容量を使い果たした」と出力されています。
つまり、「512M のメモリ容量が使用可能であってもメモリリミットオーバーとなる」わけではなく、メモリ上限を上げる設定が正しく行えていない状況であると見受けられます。
現時点でOpenPNE側の不具合であるという見解に至るのは早計だと思われるので、少なくともエラーメッセージ中のメモリ上限値として 33554432 bytes が出力される原因を探るべきです。
なお、OpenPNEのインストールおよびコンバート操作等に必要なメモリ容量は情報として明示されていないようですが、これまでの経験では 32M では足りず、64M あれば十分であるという認識です。
上記のように示しましたが、upgrade Processing build_model 時点で問題が生じているという事実を基に、この操作でどのようなメモリの使われ方がしているかを探るという方針も悪くはないかもしれません。
#2 Kousuke Ebihara が13年以上前に更新
- 3.6 で発生するか を Yes にセット
#3 Kiwa Sakai がほぼ13年前に更新
- ステータス を New(新規) から Invalid(無効) に変更
config.OpenPNE2.php にある
/// // memory_limit設定 /// // ini_set('memory_limit','32M');
memory_limit の設定のコメントアウトが外されていたため、メモリの上限が 32M になっていました。
コメントアウトし、512M の状態でコンバートしたところ、問題なく完了しました。このチケットは閉じます。