質問: mysqlのパフォーマンスの問題をどのように追跡およびデバッグしますか? mac os x 10.4(darwinカーネルバージョン8.10.1)で実行されているサーバーシステムがあります。このサーバーは主にbugzillaサーバーとして使用されますが、他にもいくつかのwebベースのサービスが実行されています(testlink、tikiwiki)。bugzillaデータベースには約60000のバグがあり、システムには約300のアクティブユーザーがいます。bugzillaはバージョン3.0で、perl 5.8.6、apache 1.3.33、mysql5.0.38で実行されています。時々、bugzillaがデータベースエラーをスローするという深刻な問題が発生します。software error: can't connect to the database. error: too many connections 私はすでにこの問題の可能な解決策にいくつかの手がかりを持っていますが、これらのタイプの問題をどのようにデバッグするかについて、より一般的な質問を提起したいと思いました。現在、mysqlデータベースを監視するために以下を設定しています。 5分ごとに完全なmysqlプロセスリストをダンプするcronジョブ my.cnfでlog-slow-queriesを有効にして、15秒以上かかるクエリをログに記録します このデータの収集を開始して、「接続が多すぎる」問題の理由を見つけることができるかどうかを確認しました。mysqlデータベースを監視し、問題の根本原因を診断するのに役立つと考えられる他のことはありますか?
回答: apacheワーカーは何人いますか?許可した最大mysql接続はどのくらいですか? apacheはリクエストを処理するときにhttpdワーカーごとにcgiプロセスを生成するため、前者が後者よりも大きい場合、apacheはmysqlが許可するよりも多くの接続を開くことができます。次のログ設定をお勧めしますlog_slow_queries log-queries-not-using-indexes set-variable = long_query_time=1