2011-12-09 14 views
0

現在、私のサーバで遅くなっています。 PHPとMySQLでapache2サーバを実行しています。 MySQLサーバーは、Webサーバー自体と同じマシン上にホストされています。MySQLと組み合わせたPHPが極端に遅い

MySQLクエリを含むPHPファイルをリクエストするたびに、ページの表示に約24秒かかります。ページをリクエストしている間、apache2のCPU使用率は11%(!)になります。これは、以前の1週間前のものと非常によく似ています。

MySQLのクエリを使用しない非PHPファイルまたはPHPファイルがすぐに表示されます。

MySQLクエリを含むスクリプトで問題が発生する可能性はありますか? Apacheのエラーログ内で有用な情報が見つかりませんでした。

+0

あなたはMySQLログにアクセスできますか? – konsolenfreddy

+0

私はサーバー全体にアクセスできます。残念ながら、私はログがどこに保存されているのかは不明です。ディレクトリ/ var/log/mysqlは空ですので、別の場所に格納していると仮定します。 ファイル/var/log/mysql.errとmysql.logは空です。 – beta

+0

クエリサイズは応答時間にまったく影響しますか?つまり、テーブルに触れない単純なアイデンティティを書くと、まだ反応するのに30分かかりますか? –

答えて

1
mysqlのコンソールで

show full processlist; <-- to show what are the current SQL 

ログファイルされた場合を確認するには: -

show variables like '%log%'; <-- to show mysql variables 

クエリのベンチマーク/テストを行う場合は、必ず使用して、クエリキャッシュをオフにすることを忘れない、: -

set session query_cache_type=off; 
+0

あなたの答えをありがとう。 show full processlist 2行を返しました。明らかにprocesslistクエリ自体と私のサイトからのクエリです。 59 |ルート| localhost | db1 |スリープ| 20 | | NULL |時間:20はかなり高いようです。 – beta

+0

スリープスリープzzzzZZZZ ...あなたはいくつかの遅いページを開いて、比較のために同時にフルプロセスリストを表示する必要があります。 – ajreal

+0

まあ、このスリープエントリが消えた後にページが最終的に読み込まれるようです。私はそれをWordPressのブログのより遅いページでテストしました。 – beta

1

データベースクエリには時間がかかり、各クエリには少なくとも1つのファイルが含まれています。ファイルへのアクセスが遅い。

ハードドライブからではなくRAM上でデータベースを実行することで、スピードアップを図ることができますが、実際の答えは可能な限りキャッシュして、可能な限りデータベースのクエリをほとんど行わない可能性があります。

+0

あなたの答えをありがとうが、サイトは1週間前のように本当に速く走っていました。突然それは非常に遅いので、何らかのタイムアウトが発生したと仮定します。私は背景の知識が欠けている。 – beta

1

いくつかのcmsのログ機能とexceのためにmysqlデータベースが2GB(または4GB)より大きいかどうかを確認できますファイルサイズの制限。

+0

私はデータベースのサイズを取得するためのクエリのためのグーグルと約2.1 MBのような小さなのようだね。 – beta

関連する問題