Magentoページの読み込みに時間がかかりすぎる


10

マジェントのウェブサイトを持っています。ユーザーはいません(一度に最大2〜3人)。

サーバー:CPU:2000MHz RAM:2048Mb HDD:50000Mb。

ZendServerCE(apc + memcached + Zend Optimizer + Zend Data Cache)をインストールしました。ウェブサイトの読み込みが最悪だったため、memcachedをオフにしました。管理コンソールでフラットタイプの構造、インデックスの再作成、データのキャッシュを設定しました。

だから私はapc + Zend Optimizer + Zend Data Cacheを持っています。

  1. 最初の問題は、ディスパッチがどのように機能するかをランタイムで確認したことです。start_session()の呼び出しには約500〜700ミリ秒かかります。その良い結果ではないようです。なぜそんなに長いのかわかりません。

  2. 私はこれを読みました:http : //dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_buffer_sizeそして私のサーバーに最適なオプションを見つけました。

1時間当たり:

Key_read_requests = 8887
Key_reads         = 252
Key_write_request = 187
Key_writes        = 146 

252/8887> 0.01ですが、多すぎません。それは私が今までに得た最適な値です。その他の結果は> 6から始まりました。

ここにmy.cnfがあります:

key_buffer              = 48M
myisam_sort_buffer      = 2M
sort_buffer             = 2M
read_buffer_size        = 2M
join_buffer             = 2M
read_rnd_buffer         = 2M
max_allowed_packet      = 128M
thread_stack            = 192K
thread_cache_size       = 16
query_cache_type        = 1
myisam-recover         = BACKUP
max_connections        = 50
table_cache            = 256
#thread_concurrency     = 10
query_cache_limit       = 8M
query_cache_size        = 98M

3.何らかの理由でMemcachedが良くなかった。オフにしました。ただし、zendデータキャッシュとzendオプティマイザは引き続き機能します。

4。APCは正しいようです。コントローラーアクションをロードするには、最初に3〜4秒かかり(確認のためにdie()を設定しました)、初めて1〜1.3秒かかります。

5。数分後、mysqlを再起動したところ、良い結果が得られました。ページは1.5〜2.5秒で読み込まれていました。しかし、今(数時間後)は6〜10秒かかります。理由がわかりません。

それで、ここに間違った設定がいくつかありますか?サーバーがmagentoに適していない可能性がありますか?

更新1:現在 約600のカテゴリーと1000の製品、および約20000のカテゴリー(異なるWebストアの場合)と将来の1500-3000の製品。

多くの属性はありません。

更新2 sshコンソールの動作が遅すぎることに気づきました。サーバーを再起動したところ、高速に動作しました。RAMに問題があることを意味します。十分なスペースがありません。

これはApacheなしの初期状態です:

             total       used       free     shared    buffers     cached
Mem:          2048        600       1447

更新3わかり ました。今それは0.5-1.5秒間ロードされます

ここに設定があります: mysql

[mysqld]
key_buffer_size         = 256M
tmp_table_size      = 32M
max_heap_table_size     = 32M
myisam_sort_buffer      = 4M
sort_buffer             = 4M
read_buffer_size        = 4M
join_buffer     = 4M
read_rnd_buffer     = 4M
max_allowed_packet  = 64M
thread_stack        = 192K
thread_cache_size       = 16
query_cache_type        = 1
myisam-recover          = BACKUP
max_connections         = 20
table_cache             = 1024
innodb_buffer_pool_size = 128M
query_cache_limit   = 24M
query_cache_size        = 256M

php

[apc]
apc.stat=1
apc.enabled=1
apc.optimization=0
apc.cache_by_default=1
apc.shm_segments=10
apc.shm_size=256M
apc.ttl=0
apc.user_ttl=0
apc.num_files_hint=10000
;apc.mmap_file_mask="/tmp/apc"
apc.max_file_size=5M
apc.enable_cli=1
apc.mmap_file_mask="/tmp/apc.XXXXXX"
apc.slam_defense=0
apc.user_entries_hint=10000

すべてが完璧に動作しますが、1つの質問が残っています。APCは私にこの統計を示しています: ここに画像の説明を入力してください

なぜヒットが非常に小さいのですか?何か案は?


Magnetoのインストールに関する数行をドロップするとよいでしょう(たとえば、カタログサイズ、変更、拡張など)。
user487772 2013

サーバーを適切にセットアップできるように、誰かが一連の構成ファイルを投稿するだけの方法はありません。数十のファイルがあります。使用可能なハードウェアを最大限に活用するために必要なソフトウェアおよびシステムレベルの変更の特定のリビジョン。
ベンレッサーニ-ソナッシ2013年

なぜ反対票を投じるのか説明してください
アンソニー

@ティム私は質問を更新しました
アンソニー

2
xhprof立ち寄って、ロードに最も時間がかかっているものを視覚化してみます。これは負荷がかかっている本番サーバーですか、それとも単なるテスト用ですか?
philwinkle 2013

回答:


6

質問はマゼント中心ではないようですので、ここではあまりマゼント中心ではない答えを示します。

OpCodeキャッシングとDB最適化は、Webアプリケーションをある程度高速化するための良い方法です。しかし、利益は比較的穏やかです。実際の速度を上げるには、ワニスキャッシュの使用を検討する必要があります。これはオープンソースであり、構成が簡単で、magentoのモジュールを自由に利用できるため、magentoとの統合が簡単です。

それがどのように機能するかの簡単な概要を含む良い記事もありますhttp : //www.fabrizio-branca.de/make-your-magento-store-fly-using-varnish.html

特にチャートを考慮してください:

ページ/秒


4
Varnishは、ファストストアが既にあり、リソースを相殺したい場合に最適です。しかし、それが店が遅いという事実を隠すために決して使われるべきではありません。そもそもページを生成する必要があるため、ページの読み込み時間は常に6〜10秒です。
ベンレッサーニ-ソナッシ2013年

以前使用したmemcachedのようです。私はmysqlプロパティで間違っていると思うか、サーバーが弱すぎる
Anthony

2

ビジネスがホスティングのパフォーマンスに依存している場合、経験のないサーバーを管理しようとしているのはなぜですか。

専門のMagentoホストに連絡してシステム管理を任せれば、確かにメリットが得られます。

仕様を見ると、Magentoストアを実行しようとするのに十分なRAMがありません。あなたのような同様の質問がたくさんあります、

/server//a/400748/113375
/server/430565/magento-hosting-on-a-budget


クライアントの予算が限られているためです。マゼントのホストには、1マウントあたり50ユーロ以上を支払う必要があります。ホストには年間150〜200ユーロの制限があります。)とにかくリンクに感謝します
アンソニー

1
その後、クライアントは100%の最適化で年間20〜40,000ドルの収益を期待できます(ホスティングは収益の0.5〜1%)。すべての詳細と技術設定を提供できる人はたくさんいますが、少なすぎて多くのことをしようとしています。技術面では機能するかもしれませんが、ビジネス面では横ばいになります。動的ページの読み込み(fpcなし)が3秒未満でない限り、訪問者の56%が失われ、理想的には1〜2をターゲットにします。この状況では、95〜99%の確率で3秒を超えるページの読み込みやサイトのダウンが発生します。

1

これは物理ハードウェアですか、それとも仮想プライベートサーバーですか。データベースを専用のサーバーに移動する必要があります。これには、速度の問題がApache / PHPにあるのかMySQLにあるのかを特定できるという利点もあります。

start_session()が遅いということは、おそらくハードウェアの能力が不足しているということです。あなたのテクノロジーの選択がセッションがディスクまたはRAMに格納されることを意味するかどうかはわかりませんが、500〜700ミリ秒はほぼ確実にセッションがディスクに格納され、I / Oパフォーマンスの問題が発生していることを意味します。 RAMに収まらないためディスクにスワッピング...しかし、それはすべての推測です。

幸運を!


ご回答有難うございます!VPSを使用しています。magentoにはあまり適していませんが、この範囲で最適化する必要があります。データベースがディスクにスワップしていることを確認することはできますか?
アンソニー

1
free -mスワップを使用しているかどうかが表示され、topコマンドの最新バージョンでは、OとPを押してスワップの使用順に並べ替えるかどうかが表示されます。そうしないと、このようなものでmysqldのプロセスIDを使用してにフォールバックする必要があります。awk '/^Swap:/ { SWAP+=$2 } END { print SWAP" kB" }' /proc/$(pidof mysqld)/smaps すべては、ここで説明:dbasquare.com/2012/04/10/...
ラルフ・タイス

1

明らかにパフォーマンスを向上させる「機能する構成」を示す方法はありませんが、Magentoは実際にこのようなことを試み、高度に構成されたLAMPスタックの例をパフォーマンスホワイトペーパーに投稿しています。これらのホワイトペーパーの方法論は、CEおよびEEに適用されます。両方のホワイトペーパーを完全に読むことを強くお勧めします。アイデアがこのスレッドの多くを反映し、非常に具体的なMagentoの推奨事項をソースから直接提供しているためです。http//www.magentocommerce.com/whitepaper/


1

構成

ZendFramework(zendオプティマイザーとzendデータキャッシュ)+ APC + Memcache + Nginx

私にぴったりです。

30人を超える同時ユーザーが1秒未満(〜0.4秒〜0.6秒)でページをロードできる

nginxを80ポート(プロキシとして)に設定し、Apacheを8080に設定しました。

リンクをありがとう@MattSchweers。忘れました。MySQLの設定に役立ちます


問題ない!今週、MySQLを調整するためにこれらのホワイトペーパーを実際に使用しました-うまくいきました。

1

私の経験では、litespeedサーバーはパフォーマンスを2倍向上させ、月額$ 32の1cpuライセンスに相当します。phpはlitespeedで個別に実行されるため、1cpuライセンスのみが必要であると言われました。


Webサーバーはボトルネックではありません。PHPは、Litespeedに変更しても何も変わりません。
ベンレッサーニ-ソナッシ2013年

LitespeedがMagentoに最適な選択肢であることに一般的に同意しますが、この回答はおそらくOPによって引き起こされる問題を解決するものではなく、彼の指定された予算の範囲外です。
プレストン

0

複数のウェブストアと複数のカテゴリがある場合、Magentoは基本的にすべてのウェブストア、カテゴリ、製品のエントリの一種のキャレット製品を作成し、データベースに大きな負荷をかけます。APCのミスは非常に多く、調査する必要があります。ただし、APCを修正しても、特にトラフィックが増加した場合は、パフォーマンスの問題が続く可能性があると思います。サイトを高速化するには、VarnishまたはFull page cache(Enterprise Editionの場合)のopキャッシュをインストールする必要があります。

MagentoはDBに対して多くの読み取り書き込みを行うため、マスターへの書き込みが行われている間、マスタースレーブレプリケーションモードでMySQlにスレーブからのすべてのmagento読み取りを行わせることもできます。


0

私は次のAPCオプションを変更してみて、ヒットがピックアップされるかどうかを確認します。

apc.shm_segments 1

apc.ttl 7200

apc.user_ttl 7200

ライブサイトでは、次のものも使用できます。

apc.stat 0

これにより、ファイルが最後にコンパイルされてから変更された場合にAPCチェックが停止し、速度が大幅に向上します。PHPファイルを編集するときは、APCキャッシュをフラッシュすることを忘れないでください。


0

他のいくつかの考え。innodb_buffer_pool_sizeを増やしたいと思うかもしれませんが、128Mは少し低く、小さなサイトでもかなり急速に成長する可能性があります。変数は、メモリに保持されるデータの量を決定します。

Magentoはこれをすべてのテーブルに使用します。これには、急速に増大するログテーブルも含まれます。保持しているこのデータの量を確実に制限する必要があります。コマンドラインから「php shell / log.php --status」を実行すると、どこにいるか、手に負えなくなっているかどうかがわかります。ログテーブルをクリーンアップするオプションもあります。

2GBのRAMはあまり機能しないので、メモリを割り当てる場所に注意する必要があります。

また、フルページキャッシュ+キャッシュウォーマーは、サイトのカタログとcmsページを準備して高速に保つのに役立ちます。こちらで確認できます:http : //ecommerce.brimllc.com/full-page-cache-magento.html

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.