Client Emulator
At the beginning of this week (Feb 13), I discovered that even with the mainly read-only Browsing mix of the TPCW benchmark, the slave nodes were unevenly loaded, whereas, the master node was not yet saturated with updates (looking at the list of pending update transactions).
Me & Gokul made an investigation, and found a problem with the workload generating loop. Upon return from select, only one socket was processed, even if more than one completed. Since this is the last step of the loop, the control flow then goes to the send phase, which, by implementation only sends a new request, when the previous one has been processed. Thus, with the above problem, little or no requests were submitted, with the control flow proceeding to the receive phase, which processed just one request again. This caused the offered load to be really low and uneven.
Fixing this problem seems to generate a more even load.
TPC-W PHP Implementation
Gokul came across code in the PHP implementation of the TPC-W benchmark, which depended on obsoleted functions for accessing the GET request parameters. This caused execution errors in the refreshCart and deleteShoppingCart queries, which practically means that they never got executed. Thus, the offered update workload was less, compared to the one suggested by TPC-W.
Fixing this problem with the pages increased the level of abortions to a max of 2.7% for the shopping mix with 4 slaves.
From the brief run that I made, it turned out that the level of aborts increased as the number of slave databases increased, which does not make sense (e.g. 1 Slave (1.35%), 2 Slaves (2.22%), 4 Slaves (2.70%), 8 Slaves (0.80%)).
Currently, I am researching into this problem.