You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by Danny Angus <da...@thought.co.uk> on 2002/05/09 15:12:09 UTC

RE: Packet is larger than max_allowed_packet from server configurationof 1048576 bytes

>More overly, I'm pretty sure the problem is with the JDBC driver... I'd
>bet it's mysql, and while I'm not really expert about that db, there
>seems to be a meg limit on the binary field by default.

its not the driver, its actually the default MySQL configuration (in
/etc/my.cnf)


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: Packet is larger than max_allowed_packet from server configurationof 1048576 bytes

Posted by Stuart Roebuck <st...@adolos.co.uk>.
Thank you again for all the useful suggestions.

I haven't updated James to the latest CVS, but I've updated my mysql 
driver and relaunched mysql with the command line:

	safe_mysqld -O max_allowed_packet=8M --user=mysql

I've since received an email that previously killed the system.

Thanks again,

Stuart.

On Thursday, May 9, 2002, at 03:11 PM, Noel J. Bergman wrote:

>> its not the driver, its actually the default MySQL configuration (in
>> /etc/my.cnf)
>
> It is both.  There are limiting bugs in the version of the mmmysql 
> driver
> bundled with James (e.g., "Fixed ArrayIndexOutOfBounds when sending 
> large
> BLOB queries -- Max size packet was not being set"), and depending upon 
> your
> mysql build, it is likely that you also need to add:
>
> 	set-variable = max_allowed_packet=16M
>
> to the [mysqld] section of the global configuration file, e.g., 
> /etc/my.cnf,
> or change the startup statement for mysqld to set max_allowed_packet.
>
> For those who care, the documentation for max_allowed_packet says: "This
> value by default is small, to catch big (possibly wrong) packets.  You 
> must
> increase this value if you are using big BLOB columns. It should be as 
> big
> as the biggest BLOB you want to use. The protocol limits for
> max_allowed_packet is 16M in MySQL 3.23 and 4G in MySQL 4.0."
>
> If you expect a LOT of large packets, you might want to be aware of the
> following: "For example, if you have BLOB values that contain up to 16M 
> of
> data, you must have a communication buffer limit of at least 16M (in 
> both
> server and client).  The client's default maximum is 16M, but the 
> default
> maximum in the server is 1M. You can increase this by changing the 
> value of
> the max_allowed_packet parameter when the server is started. The MySQL
> server shrinks each communication buffer to net_buffer_length bytes 
> after
> each query. For clients, the size of the buffer associated with a 
> connection
> is not decreased until the connection is closed, at which time client 
> memory
> is reclaimed."
>
> Caveat: "You can also get strange problems with large packets if you are
> using big blobs, but you haven't given mysqld access to enough memory to
> handle the query. If you suspect this is the case, try adding ulimit -d
> 256000 to the beginning of the safe_mysqld script and restart mysqld."
>
> 	--- Noel
>
>
> --
> To unsubscribe, e-mail:   <mailto:james-dev-
> unsubscribe@jakarta.apache.org>
> For additional commands, e-mail: <mailto:james-dev-
> help@jakarta.apache.org>
>
>

            Public Key - 1024D/88DD65AF 2001-11-23 Stuart Roebuck (Adolos)
      Key fingerprint = 89D9 E405 F8B1 9B22 0FA2  F2C1 9E57 5AB1 88DD 65AF
-------------------------------------------------------------------------
Stuart Roebuck                                  stuart.roebuck@adolos.com
Systems Architect                             Java, XML, MacOS X, XP, 
etc.
ADOLOS                                           <http://www.adolos.com/>


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


RE: Packet is larger than max_allowed_packet from server configurationof 1048576 bytes

Posted by "Noel J. Bergman" <no...@devtech.com>.
> its not the driver, its actually the default MySQL configuration (in
> /etc/my.cnf)

It is both.  There are limiting bugs in the version of the mmmysql driver
bundled with James (e.g., "Fixed ArrayIndexOutOfBounds when sending large
BLOB queries -- Max size packet was not being set"), and depending upon your
mysql build, it is likely that you also need to add:

	set-variable = max_allowed_packet=16M

to the [mysqld] section of the global configuration file, e.g., /etc/my.cnf,
or change the startup statement for mysqld to set max_allowed_packet.

For those who care, the documentation for max_allowed_packet says: "This
value by default is small, to catch big (possibly wrong) packets.  You must
increase this value if you are using big BLOB columns. It should be as big
as the biggest BLOB you want to use. The protocol limits for
max_allowed_packet is 16M in MySQL 3.23 and 4G in MySQL 4.0."

If you expect a LOT of large packets, you might want to be aware of the
following: "For example, if you have BLOB values that contain up to 16M of
data, you must have a communication buffer limit of at least 16M (in both
server and client).  The client's default maximum is 16M, but the default
maximum in the server is 1M. You can increase this by changing the value of
the max_allowed_packet parameter when the server is started. The MySQL
server shrinks each communication buffer to net_buffer_length bytes after
each query. For clients, the size of the buffer associated with a connection
is not decreased until the connection is closed, at which time client memory
is reclaimed."

Caveat: "You can also get strange problems with large packets if you are
using big blobs, but you haven't given mysqld access to enough memory to
handle the query. If you suspect this is the case, try adding ulimit -d
256000 to the beginning of the safe_mysqld script and restart mysqld."

	--- Noel


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>