I'm running into a problem where multiple MySQL updates being performed at the same time will lock up and takes several minutes to finish. I'm using InnoDB, so I'm confused as to why this could be happening since each update is updating only 1 row. I'm also using a m2.4xlarge RDS instance (the largest they come).

Here's what I'm doing: I have a table with about 100M rows in it, with "views" being a column (which is indexed), and I want to update the views on about 1M rows. On several different servers I have a loop like this where each server has it's own set of rows to be updated (pseudo code):
mysql("set autocommit=0"); mysql("start transaction"); foreach($rows as $row) { mysql("update table set views=views+1 where id=$row[id]"); } mysql("commit"); This loops through all the rows that need to be updated. It works perfectly when the number of servers is small, like around 4, but when it grows to 10+ the updates start to hang in the "Updating" state all at once. Nothing says that it's waiting on a lock, it's just "Updating". This happens for about 5 minutes, where it will finally make the updates and continue through the loop and eventually happen again.
I'm not looking for alternative ways to do the updates. Having things like a tmp table and
update table,tmp_table set table.views = table.views+tmp_table.views where table.id = tmp_table.id lock all the rows that are being updated until they all finish (which could be hours), which won't work for me. They MUST be in these awful loops.
I'm wondering why they could be getting stuck in the "Updating" state, and what I can do to prevent it.
tldr; Having 10+ "update" loops will eventually lock up all the updates being done, at the same time, for an unknown reason until they decide to finally make updates and continue through the loops, only for it to happen again seconds later.
SHOW VARIABLES: http://pastebin.com/NdmAeJrz
SHOW ENGINE INNODB STATUS: http://pastebin.com/Ubwu4F1h