2009-06-23 15 views
2

私はサイトCMSを一から書いたので、サイトはゆっくりとトラフィックを得るようになっています(30-40k /日)。 8GBのラムを搭載したクアッドコアのマシンでは、常に6〜9回くらい動きます。私は400-500k /日のサイトで美しく実行されるスクリプトを書いたので、私は完全に無能ではないと思っています。パフォーマンス(php/mysql)の観点からスクリプトのトラブルシューティングを行うにはどうすればよいでしょうか?

クエリを組み合わせ、いくつかのmysql呼び出しを完全に削除し、必要に応じてPHPで更新された静的TXTファイルでサイトの一部を置き換えることで、すべてのページで実行されるクエリの数をほぼ60%削減しました。これらの変更はすべて、ページ実行時間に影響を与えました(前回と同じように、1.7秒ではなく0.3秒でインデックスが読み込まれます)。

IOwaitは事実上なく、mysql DBはわずか30MBです。このサイトはlighttpd、php 5.2.9、mysql 5.0.77を実行します。

高負荷の原因となるものの一番下に到達するにはどうすればよいですか?私は本当に問題をローカライズしたいと思っています。なぜなら、 "top"はmysqlで、CPU使用率は常に50-95%です。

答えて

1

あなたのアプリケーションコードをプロファイルすることができます。あなたのリソースの多くを消費しているコールを調べます。

はあなたが非常に遅いいくつかのSQLクエリを持っているかもしれませんが、:ここではいくつかのオプションが(最初の3 Googleは、 "PHPのプロファイラ" のヒット)です頻繁に実行されないと、おそらくパフォーマンスの問題の大きな原因ではありません。より高速なSQLクエリがあるかもしれませんが、頻繁に実行されてパフォーマンスへの影響が大きくなります。アプリケーションのプロファイリングは、これらの識別に役立ちます。

データベースの使用に関するアプリケーションのパフォーマンスを改善するための最も一般的なアドバイスは、頻繁に変更されるデータを特定し、そのデータをキャッシュに入れて迅速な検索を行うことです。これはアプリケーションの使用パターンに非常に依存しているため、これで最も効果的なデータを特定するのはあなた次第です。

キャッシングの技術に関する限り、APCmemcachedは、PHPでうまくサポートされているオプションです。

また、MySQL optimization chapterをよく読んで、アプリケーションに関連する改善点を確認することもできます。

他の良いリソースはMySQL Performance Blog、書籍「High Performance MySQL」です。"あなたがMySQLベースのウェブサイトを真剣に実行している場合は、これらのリソースに頻繁に相談するべきです。

+0

おかげビル、私はこれらのツールを調査します。 –

1

mytopは始めるのに適しています。これは、MySQLのトップの基本的だし、あなたのDBがやっている正確に何にあなたの窓を与える:

http://jeremy.zawodny.com/mysql/mytop/

ノア

+0

ショーPROCESSLISTと同じこと;。。。? –

0

それはprodingの多くを取ることができるように、それは、任意の数の理由かもしれません。まず最初に、低速クエリログを有効にして、手で、またはparserと移動します。特定の頻繁に使用され、遅いクエリを最適化する(おそらく何かがインデックスされていないものを選択する)

3

EXPLAINを使用すると、クエリの最適化/トラブルシューティングに役立ちます。読まれてそれは非常に便利です

また、あなたがあなたのMySQL configurationへの変更を行った場合、あなたはそれを再訪したい場合があり

+0

+1はEXPLAINを使用するための提案です –

関連する問題