2

上周五我们将 Magento 从 1.7 升级到 1.8,我在使用 Magento 时遇到了很大的问题。

问题是我们在 MySQL 数据库中有很多死锁。

我们的服务器设置是

1 个负载均衡器 4 个 Web 服务器(Apache、PHP5、APC) 2 个 MySQL 服务器(64 GB Ram,30 核 SSD HDD)- 1 个主服务器(具有用于会话的 Memcache)- 1 个从属服务器(具有用于缓存的 Redis)

Magento 1.8 的死锁比 1.7 少,但仍然不时出现..

任何人都对如何解决这个问题有一些好主意。

这是来自 SHOW ENGINE INNODB STATUS 的一些数据;

最新检测到的死锁

130930 12:03:35 * (1) TRANSACTION: TRANSACTION 918EEC3B, ACTIVE 37 sec start index read mysql tables in use 1, locked 1 LOCK WAIT 41 lock struct(s), heap size 6960, 50 row lock(s), undo日志条目 6 MySQL 线程 id 51899,OS 线程句柄 0x7f9774169700,查询 id 2583719 xxx.xx.xxx.47 dbxxx 更新 UPDATE m17_index_processSET started_at= '2013-09-30 10:03:36' WHERE (process_id='8') * ( 1) 等待此锁被授予:记录锁空间 id 594 页号 3 n 位 208PRIMARY表索引xxx.xx.xxx.47 dbxxxm17_index_processtrx id 918EEC3B lock_mode X 锁定记录但不等待间隙 * (2) TRANSACTION: TRANSACTION 918EE3E7, ACTIVE 72 sec start index read mysql tables in use 1, locked 1 680 lock struct(s), heap size 80312, 150043 row lock(s), undo log entries 294 MySQL thread id 51642,操作系统线程句柄 0x7f8a336c7700,查询 id 2586254 xxx.xx.xxx.47 dbxxx 更新 UPDATE m17_index_processSET started_at= '2013-09-30 10:03:40' WHERE (process_id='8') (2) HOLDS THE LOCK(S): RECORD LOCKS space id 594 page no 3 n bits 208 index PRIMARYof table dbxxxm17_index_processtrx id 918EE3E7 锁定模式 S 锁定记录但不锁定间隙 (2) 等待此锁定被授予:记录锁定空间 id 594 页号 3 n 位 208PRIMARY表索引dbxxxm17_index_processtrx id 918EE3E7 lock_mode X 锁定记录但不等待间隙 *我们回滚事务 (1)

此致。拉斯穆斯

4

1 回答 1

0

似乎死锁是由于索引过程造成的。尝试禁用自动索引Magento - 以编程方式禁用自动索引

并手动进行。还可以尝试禁用 cron 一段时间并检查问题是否再次发生。

许多商店管理员可能会保存来自不同商店的产品。在这种情况下,产品保存可能会导致索引进程死锁。

谢谢

于 2013-10-01T11:41:06.250 回答