MySQL: Error reading communication packets
I am glad you said all your data is InnoDB so I can answer as follows: If max_allowed_packet is maxed out at 1G and you are still having issues, there is really only two places to look:
- innodb_log_buffer_size : The size in bytes of the buffer that InnoDB uses to write to the log files on disk. The default value is 8MB. A large log buffer enables large transactions to run without a need to write the log to disk before the transactions commit. Thus, if you have big transactions, making the log buffer larger saves disk I/O.
- innodb_log_file_size : The size in bytes of each log file in a log group. The combined size of log files must be less than 4GB. The default value is 5MB. Sensible values range from 1MB to 1/N-th of the size of the buffer pool, where N is the number of log files in the group. The larger the value, the less checkpoint flush activity is needed in the buffer pool, saving disk I/O. But larger log files also mean that recovery is slower in case of a crash.
I addressed something like about 2 years ago
Aug 01, 2011
: How does max_allowed_packet affect the backup and restore of a database?Apr 20, 2011
: MySQL gives "Out of Memory" error when inserting a large file. From where is this filesize limitation arising?
SUGGESTIONS
You need to increase the InnoDB transaction logs. Here are the steps to safely increase innodb_log_buffer_size and innodb_log_file_size:
Step 01 : Add these to /etc/my.cnf
[mysqld]
innodb_log_buffer_size = 32M
innodb_log_file_size = 2047M
Step 02 : Run this in mysql
mysql> SET GLOBAL innodb_fast_shutdown = 0;
Step 03 : Shutdown mysql
service mysql stop
Step 04 : Move the old logs aside
mv ib_logfile0 ib_logfile0.bak
mv ib_logfile1 ib_logfile1.bak
Step 05 : Start mysql
service mysql start
That's it.
The InnoDB Infrastructure should now have enough logging space for different size BLOBs.
Give it a Try !!!