継続的に実行されるマルチプロセス PHP (CLI) アプリケーションがあります。もともと、PHP の標準 Ubuntu 10.04 パッケージ ビルド (5.3.2-1ubuntu4.18) を使用していました。ただし、各プロセスで使用されるメモリの量によって、特定の時間に実行できるフォークの数が制限されるため、メモリ使用量を最適化しようとしています (使用可能なメモリ量が限られているため)。preinheimerのアドバイスに従って、PHP を再コンパイルし、すべての拡張機能を無効にしてから、アプリケーションに必要なもの (mysql、curl、pcntl、posix、および json) のみを再度有効にしました。私の構成コマンドは次のとおりです。
'./configure' '--prefix=/usr/local/phpbare' '--with-config-file-path=/etc \
/php5/clibare' '--disable-all' '--with-mysql=mysqlnd' '--with-curl' \
'--enable-pcntl' '--enable-posix' '--enable-json'
この新しい「ベアボーン」ビルドにより、アプリケーションを実行できましたが、驚いたことに、実行中のプロセスを を使用して表示するtop
と、以前とほぼ同じ量のメモリが使用され、(さらに問題が大きくなります)、膨大な量の CPU 時間が使用されます。 (top によって報告される量が通常 0 ~ 1% になる前に、CPU の 15 ~ 20% になることがよくあります)。より少ないコンピューティングリソースを使用するようにスクリプトを最適化するphp拡張機能が欠落している可能性はありますか??? または、Ubuntu ビルドはおそらく Ubuntu アーキテクチャ用に最適化されていますが、私のカスタム ビルドにはこれらの最適化が欠けていますか? もしそうなら、Ubuntuビルドでどの最適化が使用されているかをどのように見つけて、「ベアボーン」ビルドでそれらを再作成できますか?
からの出力のスニペットを次に示しますps aux | grep php
。これは、以下のコメントで私の主張を示すために使用されます。
root 12952 0.3 0.9 33176 4968 pts/2 S Feb14 11:15 s.php 5
root 12955 0.3 0.9 32664 4732 pts/2 S Feb14 11:12 s.php 5
root 12958 0.3 0.9 32664 4796 pts/2 S Feb14 10:51 s.php 5
root 12961 0.3 0.9 32740 4752 pts/2 S Feb14 11:07 s.php 5
root 14162 0.3 0.9 33000 4904 pts/2 S Feb14 10:51 s.php 5
root 14165 0.3 1.0 33256 5340 pts/2 S Feb14 10:56 s.php 5
root 23426 9.5 1.1 13492 6040 pts/2 S Feb15 151:38 s.php 1