web-dev-qa-db-ja.com

Magentoで4つ以上の同時リクエストを実行するとCPUが100%

現在、Magentoを実行しているサーバーで問題が発生しています。信じられないほど遅いです。

これは、開発に使用されるいくつかのMagentoインストール済みのVPSであるため、私がそれらを使用しているのは私だけです。私が4を要求すると、2秒後にすべての要求が10秒で終了します。遅いが、それでも私の忍耐の範囲内。ただし、4つの「同時」要求を行うと(4つのタブを連続して非常にすばやく開くと)、4つのコアすべてが100%になり、そこに1分間留まります。

これはどのようにして可能ですか?

私はここに多くの可能性があることを知っているので、Apache/PHPサーバーをより速くするためのヒントも歓迎します。

以前ははるかに高速でしたが、APCも試しましたが、問題(PHPエラー、メモリプールに関する何か)を引き起こし続けていたため、無効にしました。

ちなみに、Magentoのキャッシュはオフで、コンパイルもオフです。これによりMagentoが通常より遅くなることはわかっていますが、どのMagentoインストールでも60秒の応答時間は正常ではないと思います。

仮想ハードウェア:
4コアおよび4096MB RAM
スワップは決して使用されません(htopでチェックされます)100 GBのディスク領域、そのうち10%が使用中

ソフトウェア:
Debian 6 DirectAdminおよびApacheカスタムビルドPHP 5.2.17(CLI)

詳しい情報が必要な場合は、入手方法を教えてください。おそらく方法がわかりません。 Linuxでコマンドラインを使用する方法とかなりの数のコマンドの使用法を知っていますが、サーバー管理の経験は限られています。

5
pancake

キャッシュを無効にすると、Magentoはひどく遅くなります。大量のXMLファイルを解析する必要があるため、vpsではさらに多くなります。ページのレンダリング方法により、ページ全体に新しいものを簡単に追加できますが、大規模なsqlクエリとxmlファイルの読み込みも必要になります。

したがって、キャッシュを無効にすると、magentoは受信するすべてのリクエストでそれらのxmlファイルを読み取る必要があることを意味します。これで、各プロセスはCPUとディスクIOを求めて競合します。 vpsディスクの場合IOは、ボトルネックが時間の90%になる場所です。したがって、4つの同時プロセスがすべて大量のxmlファイルの読み取りを要求し、Apacheプロセスで大量のCPU待機を引き起こします。 。

magentoでページをレンダリングするときに、Apacheプロセスの1つでstraceを実行すると、レンダリングする必要のあるすべてのxmlが表示されます。

私は2年以上マジェントに触れていませんが、トラフィックのあるサイトを運営するのは悪夢だったので、当時の私の会社は最終的に独自のソフトウェアを構築していました。

2
Mike

通常、2倍のルールに従うことをお勧めします:1コア= 2Gb RAM、2コア= 4Gb RAM、4コア= 8Gb RAM。はい、スワップは使用されなかったと述べましたが、おそらくRAMがオプションです。ヒント:CPUとメモリの負荷履歴を追跡するため(現在のものだけでなく))PotatoCommerceのPerformance Monitoring拡張機能を使用することをお勧めします。

1

Magento、データベース、またはその間のサブシステムを待機しているかどうかを把握する必要があります。これを確認するには、-tttフラグを指定して、webserver/phpプロセスでstraceを実行します。各システムコールの先頭にはマイクロ秒のタイムスタンプが付けられるため、PHPプロセスがDB、DNSルックアップ、および場合によっては他のシステムコールを待機している時間を確認できます。

0
Willem

私の最初の提案は、MySQL構成が適切なベースライン構成を持っていることを確認するために MySQL Tuning-primer.sh スクリプトを実行することです。

APCを使用して問題を理解し、それを利用できるようにすることも、時間の良い支出になります。 APC用の32MB SHMでも、大幅な改善が見られます。

ApacheとPHPのベースラインの最適化、つまり不要なモジュールや不要なモジュールの削除を行いましたか? Apache preforkをmod_phpで、またはApache workerをphp-fpmで使用していますか?

0
Jim Ekleberry