Re: Any advice on debugging hanging postgresql-8.1.21 (many postmaster's) - Mailing list pgsql-general

From Robert Gravsjö
Subject Re: Any advice on debugging hanging postgresql-8.1.21 (many postmaster's)
Date
Msg-id 4CA99F9C.6040405@blogg.se
Whole thread Raw
In response to Any advice on debugging hanging postgresql-8.1.21 (many postmaster's)  (Alexander Farber <alexander.farber@gmail.com>)
Responses Re: Any advice on debugging hanging postgresql-8.1.21 (many postmaster's)
List pgsql-general

Alexander Farber skrev 2010-10-04 11.20:
> Hello Postgres users,
>
> I have a Linux website with phpBB serving a small Facebook game:
>
> # uname -a
> Linux XXXXX 2.6.18-194.17.1.el5 #1 SMP Wed Sep 29 12:50:31 EDT 2010
> x86_64 x86_64 x86_64 GNU/Linux
> # cat /etc/redhat-release
> CentOS release 5.5 (Final)
> # rpm -qa | grep -i postgres
> postgresql-devel-8.1.21-1.el5_5.1
> postgresql-8.1.21-1.el5_5.1
> postgresql-server-8.1.21-1.el5_5.1
> postgresql-devel-8.1.21-1.el5_5.1
> postgresql-libs-8.1.21-1.el5_5.1
> postgresql-libs-8.1.21-1.el5_5.1
> postgresql-docs-8.1.21-1.el5_5.1
>
> It works generally ok and with little load since June.
> (My game has less than 100 users and I have AMD/Quad+4GB)
>
> On Friday I've installed a cronjob (full source code at the bottom):
>
> 3       3       *       *       *       psql -a -f
> $HOME/bin/clean-phpbb-forum.sql
>
> and on Monday I've found out, that the site is overloaded:
>
> top - 10:16:56 up 3 days, 23:56,  1 user,  load average: 20.55, 21.38, 22.92
> Tasks: 157 total,  24 running, 133 sleeping,   0 stopped,   0 zombie
> Cpu(s): 98.9%us,  1.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
> Mem:   4019028k total,  3073968k used,   945060k free,    50604k buffers
> Swap:  2104496k total,      132k used,  2104364k free,  2316196k cached
>
>    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
> 28974 postgres  16   0  122m  14m  10m R 73.3  0.4  20:56.06 postmaster
> 28727 postgres  16   0  121m  13m  10m R 54.7  0.3  37:58.58 postmaster
> 28714 postgres  16   0  122m  14m  10m R 50.4  0.4  38:38.98 postmaster
> 29412 postgres  16   0  121m  13m  10m R 46.5  0.4   8:03.96 postmaster
> 28542 postgres  16   0  122m  14m  10m R 46.2  0.4  58:49.38 postmaster
> 28482 postgres  16   0  122m  14m  10m R 45.8  0.4  61:53.37 postmaster
> 28468 postgres  16   0  122m  14m  10m R 44.2  0.4  62:46.17 postmaster
> 29017 postgres  16   0  122m  14m  10m R 43.9  0.4  19:17.06 postmaster
> 28929 postgres  15   0  122m  14m  10m R 42.2  0.4  22:01.43 postmaster
> 28500 postgres  16   0  122m  14m  10m R 41.3  0.4  59:40.23 postmaster
> 28460 postgres  16   0  122m  14m  10m R 40.6  0.4  64:17.16 postmaster
> 28894 postgres  16   0  122m  14m  10m R 38.6  0.4  23:35.53 postmaster
> 28489 postgres  16   0  122m  14m  10m R 36.0  0.4  60:32.59 postmaster
> 28719 postgres  15   0  121m  13m  10m R 25.2  0.3  38:10.33 postmaster
> 29496 postgres  16   0  121m  13m  10m R 22.9  0.4   4:20.32 postmaster
> 28556 postgres  15   0  122m  14m  10m R 17.7  0.4  57:32.62 postmaster
> 28735 postgres  15   0  122m  14m  10m R 15.7  0.4  36:09.45 postmaster
> 29602 postgres  15   0  119m  11m 9680 S  8.2  0.3   0:00.25 postmaster
> 28457 postgres  17   0  122m  14m   9m R  3.6  0.4  64:34.38 postmaster
> 26092 apache    15   0  238m  16m 3740 S  0.3  0.4   0:03.38 httpd
> 29596 afarber   15   0 12744 1116  800 R  0.3  0.0   0:00.09 top
>      1 root      15   0 10352  700  592 S  0.0  0.0   0:01.69 init
>
> I understand, that I probably supply not enough info,
> but how would you approach debugging this problem?

I would connect to the db with psql and query the pg_stat_activity and
the pg_locks views.

>
> I've run my cronjob numerous times from CLI - it works ok
> and takes only few seconds. I've installed it as an every-3 mins
> cronjob on my development VM - it works ok there too.
>
> My biggest problem is, that I don't see any information
> from Postgres at the production site - why did it have to start
> so many postmaster's (whatever those processes do).

Those are backends running queries.

>
> The only log file I've found has been /var/lib/pgsql/pgstartup.log
> and there is nothing suspicious there. (Also nothing related to Postgres
> in messages, mcelog (empty), audit.log, access_log, error_log).

You might want to increase logging. Take a look at
http://www.postgresql.org/docs/8.1/interactive/runtime-config-logging.html
for details.

Regards
/roppert

>
> Please give me some hints
> Alex
>
> # cat bin/clean-phpbb-forum.sql
> start transaction;
>
> delete from phpbb_users
> where user_type=1 and user_inactive_reason=1 and user_lastvisit=0 and
> age(to_timestamp(user_regdate))>interval '3 days';
>
> create temp table old_topics (topic_id integer) on commit delete rows;
> create temp table old_posts (post_id integer) on commit delete rows;
>
> insert into old_topics select topic_id from phpbb_topics
> where forum_id=5 and topic_poster=1 and
> age(to_timestamp(topic_time))>interval '7 days';
>
> -- select count(topic_id) as "old topics:" from old_topics;
>
> insert into old_posts select p.post_id from phpbb_posts p, old_topics t
> where p.forum_id=5 and p.poster_id=1 and p.topic_id=t.topic_id;
>
> -- select count(post_id) as "old posts:" from old_posts;
>
> delete from phpbb_posts where post_id in (select post_id from old_posts);
> delete from phpbb_topics where topic_id in (select topic_id from old_topics);
>
> update phpbb_config set
> config_value = (select count(topic_id) from phpbb_topics)
> where config_name = 'num_topics';
>
> update phpbb_config set
> config_value = (select count(post_id) from phpbb_posts)
> where config_name = 'num_posts';
>
> update phpbb_users set
> user_posts = (select count(post_id) from phpbb_posts where poster_id=1)
> where user_id = 1;
>
> update phpbb_forums set
> forum_posts = (select count(post_id) from phpbb_posts),
> forum_topics = (select count(topic_id) from phpbb_topics),
> forum_topics_real = (select count(topic_id) from phpbb_topics)
> where forum_id = 5;
>
> commit
>

pgsql-general by date:

Previous
From: Rajesh Kumar Mallah
Date:
Subject: Re: Any advice on debugging hanging postgresql-8.1.21 (many postmaster's)
Next
From: Arthur van der Wal
Date:
Subject: Question regarding custom parser