Using MySQL Cluster with Dolphin Express and SuperSockets will significantly increase throughput and reduce the response time. Generally, SuperSockets operate fully transparently and no change in the MySQL Cluster configuration is necessary for a working setup. Please read below for some hints on performance tuning and trouble-shooting specific to SuperSockets with MySQL Cluster.
SuperSockets offer an optimization of the functions used by processes to detect new data or other status changes on sockets (poll() and select()). This optimization typically helps to increase performance. It has however shown that for certain MySQL Cluster setups and loads, this optimization can have a negative impact on performance. It is therefore recommended that you evaluate which setting of this optimization delivers the best performance for your setup and load.
This optimization can be controlled on a per-process basis and with a node-global default. Explicit per-process settings override the global default. For a per-process setting, you need to set the environment variable SSOCKS_SYSTEM_POLL to 0 to enable the optimization and to 1 to disable the optimization and use the functions provided by the operating system. To set the node-global default, the setting of the variable system_poll needs to be changed in /etc/dis/supersockets_profiles.conf. Please refer to Appendix C, Configuration Files, Section 1, “SuperSockets Configuration” for more details.
In case you experience timeout errors between the ndbd processes on the cluster nodes, you will see error messages like
ERROR 1205 (HY000) at line 1: Lock wait timeout exceeded; try restarting transaction
Such timeout problems can have different reasons like dead or overloaded nodes. One other possible reason could be that the time for a socket fail over between Dolphin Express and Ethernet exceeded the current timeout, which by default is 1200ms. This should rarely happen, but to solve this problem, please proceed as follows:
Increase the value of the NDBD configuration parameter TransactionDeadlockDetectionTimeout (see MySQL reference manual, section 16.4.4.5). As the default value is 1200ms, increasing it to 5000ms might be a good start. You will need to add this line to the NDBD default section in your cluster configuration file:
[NDBD DEFAULT] TransactionDeadlockDetectionTimeout: 5000
Verify the state of the Dolphin Express by checking the logfile of the network manager (/var/log/scinetworkmanager.log) to see if any interconnect events have been logged. If there are repeated logged error events for which no clear reason (such as manual intervention or node shutdown) can be determined, you should test the interconnect using sciadmin (see Chapter 4, Initial Installation, Section 4.2, “Fabric Test”).
If no events have been logged, it is very unlikely that the interconnect or SuperSockets are the cause of the problem. Instead, you should try to verify that no node is overloaded or stuck.
Prior to SuperSockets, MySQL Cluster could use SCI for communication by means of the SCI Transporter, offered by MySQL. The SCI Transporter is a SISCI-based data communication channel. However, performance with SuperSockets is significantly better than with the SCI Transporter, which is no longer maintained. Platforms that have SuperSockets available should use those instead of SCI Transporter.