Christopher Browne cbbrowne
Mon Oct 24 19:27:18 PDT 2005
Niblett, David A wrote:

>I'm hoping that it's just a stupid user configuration error that I've made.
>I can't seem to find anything in the archives that really fits the bill
>here.
>  
>
Question:  Do some of the tables have Extremely Large rows?  e.g. - rows
that are megabytes in size?

The typical place where things "break down" in the way you describe is
if you are using Slony-I to replicate sets of data that occasionally
include rows that are really large.

The main work "cursor" on the subscriber draws in 100 records at a time
from the provider to apply them on the subscriber.

Supposing a bunch of those records were 50MB in size, apiece, this would
lead to memory consumption for that slon growing to accomodate those
records in memory.  And that memory, once claimed, doesn't readily
return to the OS until the slon terminates.

I have some ideas as to how version 1.2 might address this; in the
interim, you might try modifying how much data is fetched in slon.h.

Cut down SLON_DATA_FETCH_SIZE from 100 (used for PG 7.3) to 10, or from
10 (for >= PG 7.4) to 1 and the "high water mark" for memory consumption
should fall considerably.

#ifdef    SLON_CHECK_CMDTUPLES
#define SLON_COMMANDS_PER_LINE        1
#define SLON_DATA_FETCH_SIZE        100
#define SLON_WORKLINES_PER_HELPER    (SLON_DATA_FETCH_SIZE * 4)
#else
#define SLON_COMMANDS_PER_LINE        10
#define SLON_DATA_FETCH_SIZE        10
#define SLON_WORKLINES_PER_HELPER    (SLON_DATA_FETCH_SIZE * 50)
#endif


More information about the Slony1-general mailing list