I have a PHP system with a module that serializes objects in preparation for sending them to a remote production server. These objects represent products for a shopping cart.
Most of these objects are fairly small (about 2Kš. Observation shows that, generally, the serialization process runs in a rather small fraction of a second (that is, we can serialize a few dozen objects per second). Usually the object collections are of a modest size, but we have run as many as 55,000 objects through at a time with good performance. As an example, we ran 1300 objects through it a few minutes ago at a rate of about 160 objects/second.
Yesterday we were testing some products (about 80,000 objects)of a different nature; most of these objects are about twice as large (the largest are 4.9Kš. The serialization process took forever by comparison (1-2, even 3 seconds per object).
I rooted around a bit and noted in MySQL's "SHOW PROCESSLIST" that MySQL was taking 2-3 seconds, in some cases, in "Sending Data".
I have little understanding of what's happening. As the objects are only about 2 to 2.5 times larger on the other workload, I would expect only about a 50% performance hit instead of a hit of 1-2 OOM.
Does anyone have thoughts on this?