10

cPanelでCentOSを実行しているホストされた仮想サーバーでSymfony2.1を実行しています。Symfony CLI コマンドを使用できなくなったことを除いて、すべて正常に動作します。私はこれを得ています:

Fatal error: Out of memory (allocated 20185088) (tried to allocate 71 bytes)

エラー (たとえば、php app/console cache:clear --env=prod他の便利な Symfony コマンドを実行しようとしたときなど)。

数日前にこのエラーが発生するまで、何ヶ月も問題なく CLI を介して同じコマンドを使用しました。それ以来、このエラーを克服できませんでした。

これは PHP の memory_limit 関連のエラー (以下を参照) ではなく、「メモリ不足」エラーであり、「割り当てられたメモリ サイズ」エラーではないことを指摘しておきます。

cron ジョブに追加すると、まったく同じコマンドが完全に実行されます (これは、私が現在使用している一時的な回避策です)。つまり、スクリプト自体に責任があるわけではありません。

私がこれまでにやろうとしたこと:

  • php.ini で(またはコマンド ラインで直接) memory_limit を増やします。

  • CLI のこの設定を上書きする可能性のある他の php.ini ファイルを検索します。

  • free -m を使用したメモリ使用量の監視: 十分なメモリが利用可能でした (symfony コマンドは cron ジョブを介して完全に実行されるため、これは予想されていました)。

  • WHM/cPanel が、たとえば更新によって、ユーザー アカウントのメモリ制限を設定している可能性があるかどうかを確認しようとしています: これは、投獄された SSH シェルを使用している場合に当てはまる可能性があることがわかりました (しかし、私はそうではありません。私は通常の SSH シェルを使用しています)、または Shell Fork Bomb 保護を有効にしている場合 (しかし、いいえ、これは私のサーバーでは無効になっています)

  • ulimit -a を使用してサーバー/アカウントのulimit 設定を確認する: 制限はありますが、256M になりますが、「メモリ不足」エラーは、PHP CLI に許可されているのは 20M 以下であるようです

  • .conf ファイル、特に/etc/security/limits.confのどこかにメモリ制限があるかどうかを確認しています: 何もありませんでした

  • その種のメモリ制限を設定できる他のファイルを確認します。今回は、そのような制限を設定しているように見える /usr/local/cpanel/etc/login_profile/limits.sh を実際に見つけました (ulimit -n 100 -u 35 -m 20000 -d 20000 -s 8192 -c 20000 -v unlimited 2>/dev/null) => 数字 (20000) が一致しているように見えるので、最終的に犯人を見つけたと思いましたが、このファイルを次のように編集しますroot と SSH を介してアカウントに再度ログインしても、効果はありませんでした

私の質問 :

私は今、選択肢を使い果たしました。私はホストに連絡しましたが、彼らは私と同じくらい無知です (実際には、彼らは Symfony についてさえ知りません)。同じ問題を経験した人はいますか?

万が一、/usr/local/cpanel/etc/login_profile/limits.sh答えに近づいたとしたら、何が欠けているのでしょうか? アカウントに再ログインするだけでなく、サーバーを再起動するか cPanel を再起動する必要がありますか?

余談ですが、これは WHM/cPanel の更新に関連している可能性がありますか (前述のとおり、数日前までコマンド ラインですべてが完全に機能していました)。

助けてくれてありがとう、そして長い質問でごめんなさい。

PS: スタック オーバーフローで他の同様の質問を見つけましたが、それらはそれぞれ、私が既に試したことのいずれかを使用して解決されました。だから私は別の問題を経験していると思います。

4

1 に答える 1

1

不要な cPanel の更新に続いて、SSH ポートがデフォルト値から変更され、ログインできなかったことが判明しました。ログインするためにSSHをセーフモードで再起動しました。

今日、直感で の SSH ポートを調べ、/etc/ssh/sshd-configSSH を「通常」モードで再起動し、正しいポートでログインしました。スクリプトは完全に実行されるようになりました。

つまり、原因は SSH をセーフ モードで使用していたということです。この非常に具体的な問題が他の誰かにとって役立つことを願っています.絶対に必要でない限り、日常的に使用するためにSSHセーフモードを使用しないでください.

于 2013-04-07T07:25:08.240 に答える