2012-05-23 72 views
2

我们正在运行2台Web服务器,它们承载Amazon EC2上的Magento电子商务网站和1台MySQL数据库服务器。Amazon EC2上的MySQL/Magento性能问题

我们正在经历重大的性能问题,死锁,“锁等待超时超标” MySQL服务器上的错误等,并真正地奋斗得到这些解决。

我们的数据库服务器最近升级到m1.xlarge实例(从m1.large),仍然我们将继续遇到这些问题。

我们已经归于这些问题向坏磁盘IO,我们经常在EC2服务器上看到的,但最近我已经看到了死锁等,即使磁盘IO是罚款的问题。

的“特区”命令显示,我们在高峰时段盘非常不好的IO性能,或当我们执行像通过Magento的API创建发票数据库密集型操作。我们经常看到爱荷华州达到20%以上。

下面是截图链接最近的一个问题,我们必须在那里查询是导致缓慢整个数据库的下跌过程中表现出的“MTOP”的结果:

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

该截图显示一个或其他查询将执行其余的查询。它也表现出相当低的平均负载,当执行密集命令时,经常会看到平均负载高达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不是特别大,虽然,只有100k左右表中的行。

我现在不知道我们应该尝试或接下来做什么,并且任何建议都会真正被赞赏!

我也不清楚需要什么其他信息,以帮助诊断这样的问题,所以请与我裸露。

回答

1

几个根本原因是可能的:

  • 一些您的查询速度慢可能是锁表,因此排队等查询
  • 您的查询可能无法优化
  • 您的查询可能需要一些更多的索引表

使用this official tool检查最慢的查询:

mysqldumpslow 
+1

嗨Adrien,这些查询是Magento软件平台中的标准查询,所以这些我们可以改变的很少。这并不是说它们是“优化的”,因为该软件已知有很多错误。 – nickwes

+0

对不起,我忘了添加,我们已经在使用pt-query-digest工具,它允许我们总结mysql慢速查询日志并确定最慢的查询。 但是,关于如何解决这些问题的建议方式很少提供。 – nickwes

1

我们在我们的mysql EC2服务器上观察到类似的猪,但是,我们很快将我们的数据库迁移到了RDS实例。从那时起,问题就很少了。有人可能会说,RDS代价高昂,而EC2不是,但是,您还可以节省管理数据库/日常备份等所花费的时间。

+0

你还在运行Magento吗? – nickwes

+0

是的。我们现在已经超过6个月 – sulabh

+0

太好了,谢谢你的信息。我将看看亚马逊RDS。 – nickwes

0

我建议将您的数据库迁移到RDS实例。