2

Magento eCommerce サイトをホストする 2 つの Web サーバーと、Amazon EC2 上の 1 つの MySQL データベース サーバーを実行しています。

MySQL サーバーで重大なパフォーマンスの問題、デッドロック、「ロック待機タイムアウトの超過」エラーなどが発生しており、これらを解決するのに本当に苦労しています。

最近、db サーバーを (m1.large から) m1.xlarge インスタンスにアップグレードしましたが、これらの問題は引き続き発生しています。

これらの問題は、EC2 サーバーでよく見られるディスク IO の不良に起因すると考えられてきましたが、最近、ディスク IO が正常であってもデッドロックなどの問題が発生することがわかりました。

「sar」コマンドは、ピーク時または Magento API を介して請求書を作成するなどのデータベース集中型操作を実行するときに、ディスク IO パフォーマンスがかなり低いことを示しています。iowait が 20% を超えることがよくあります。

以下は、クエリがデータベース全体の速度を低下させていた最近の問題の「mtop」の結果を示すスクリーンショットへのリンクです。

http://i.imgur.com/AARlc.png

このスクリーンショットは、残りのクエリの実行を妨げている 1 つまたは他のクエリを示しています。また、非常に低い負荷平均も示しています。集中的なコマンドが実行されている場合、負荷平均が 3.0 に達することがよくあります。

my.cnf設定は次のとおりです。

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
innodb_file_per_table=1
key_buffer=512M
max_allowed_packet=64M
table_cache=512
innodb_thread_concurrency=5
innodb_buffer_pool_size=4976M
innodb_additional_mem_pool_size=8M
innodb_log_file_size=128M
innodb_log_buffer_size=8M
thread_cache_size=150
sort_buffer_size=4M
read_buffer_size=4M
read_rnd_buffer_size=2M
myisam_sort_buffer_size=64M
tmp_table_size=256M
query_cache_type=1
query_cache_size=128M
max_connections=400
wait_timeout=28800
innodb_lock_wait_timeout=120
max_heap_table_size=256M
long_query_time=3
log-slow-queries=...mysql-slow.log

[mysqld_safe]
log-error=...mysqld.log
pid-file=...mysqld.pid

この関数を広範囲に使用してpt-query-digest、MySQL スロー クエリ ログを分析しました。

基本的にsales_flat_quote table、更新と挿入では非常に遅いことがわかりますが、他の多くのテーブルも同様です。

sales_flat_quote特に大きくはありませんが、テーブルには約 10 万行しかありません。

4

3 に答える 3

1

mysql EC2サーバーでも同様の問題が発生していますが、データベースをRDSインスタンスにすばやく移行しました。それ以来、問題はほとんどありませんでした。RDSはコストがかかり、EC2はコストがかからないと主張する人もいるかもしれませんが、データベースや毎日のバックアップなどの管理に費やす時間も節約できます。

于 2012-05-23T10:24:51.630 に答える
1

いくつかの根本原因が考えられます。

  • 遅いクエリの一部がテーブルをロックしているため、他のクエリがキューに入れられている可能性があります
  • クエリが最適化されていない可能性があります
  • クエリによっては、一部のテーブルでより多くのインデックスが必要になる場合があります

この公式ツールを使用して、最も遅いクエリを確認してください。

mysqldumpslow
于 2012-05-23T10:19:48.487 に答える
0

データベースを RDS インスタンスに移行することをお勧めします。

于 2013-12-13T16:07:52.617 に答える