On Thu, Apr 2, 2015 at 5:24 PM, Dzmitry Nikitsin <dzmitry.nikit...@gmail.com
> wrote:

> Hey folks,
>  I have 4 postgresql servers 9.3.6(on master I use 9.3.5) configured with
>  streaming replication - with 1 maser(30GB RAM, processor - Intel Xeon
> E5-2680 v2) and 3 slaves(61 Intel Xeon E5-2670 v2), all on Ubuntu 14.04.1
> LTS,
>
> Master configuration:
>
> default_statistics_target = 50
>
> maintenance_work_mem = 1GB
>
> constraint_exclusion = on
>
> checkpoint_completion_target = 0.9
>
> effective_cache_size = 22GB
>
> work_mem = 120MB
>
> wal_buffers = 8MB
>
> checkpoint_segments = 16
>
> shared_buffers = 7GB
>
> max_connections = 300
>
>
> Slave configuration:
>
>
> max_connections = 300
>
> shared_buffers = 10GB
>
> effective_cache_size = 45GB
>
> work_mem = 19660kB
>
> maintenance_work_mem = 2GB
>
> checkpoint_segments = 32
>
> checkpoint_completion_target = 0.7
>
> wal_buffers = 16MB
>
> default_statistics_target = 100
>
>
> I am using XSF file system, size of my database – 168GB.
>
> For linux kernel I have settings:
>
> vm.swappiness = 0
>
> vm.overcommit_memory = 2
>
> vm.overcommit_ratio = 50
> kernel.*shm*all = 7864320
>
> kernel.*shm*max = 32212254720
>
> kernel.*shm*mni = 4096
>
>
> Master is primary to write data. Slave – for reporting. In reality I am
> using not more then 100 connections to slave server at the same time.
> Writing about 3000 records in a minute.
>
>
> I have one table where I writing statistics, that is portioned by month.
> Below is table size with biggest relations
>
> public.stats_201408               | 9212 MB
>
>  public.stats_201503               | 8868 MB
>
>  pg_toast.pg_toast_6404464             | 8319 MB
>
>  pg_toast.pg_toast_317921              | 7520 MB
>
>  public.stats_201409               | 7101 MB
>
>  public.stats_201412               | 4458 MB
>
>
> I see here pg_toast, from doc I read it’s large objects there, but It’s
> not related to my table stats, which is read/write heavy(type of the
> biggest column in this table => character varying(3000)). I.e. - it’s
> related to different table.
>
>
> My application create 100 connections & keeping them during whole life
> cycle(usually until next deploy – that may happen in couple days), with
> time – connection growing in memory(checking using htop) & free memory
> going down. As result with time(usually 3-4 hours) my DB start throwing
>
>
> ERROR:  out of memory
>
> DETAIL:  Failed on request of size 2048.
>
>
> After I restart my application(reconnect to DB), it start working fine
> again.
>
>
> It even fail on simple query like:
>
>
>  SELECT COUNT(*) FROM “stats" WHERE "stats”."bt_id" = $1 AND
> (stats.created_at >= '2015-04-02 04:00:00.000000') AND (stats.created_at <=
> '2015-04-03 03:59:59.999999') AND ("stats"."source" IS NOT NULL) AND
> "stats"."device" IN (1, 2) AND "stats”."ra" = 0 AND "stats"."paid" = ’t'
>
>
>
> Any help appreciated.
>

​Start here:

http://www.postgresql.org/docs/9.2/static/monitoring-stats.html#PG-STAT-ACTIVITY-VIEW

Research

Ask more specific questions.

I suspect you not only are keeping your 100 sessions directly and
permanently connected to the database but many of them are also keeping
open transactions.

​I'd also drop any preconception about which tables you think are
problematic - since likely the tables themselves are not the issue.​

David J.​

Reply via email to