Every so often our production Postgres 8.3 system will get statement
that runs for a few hours, or a few days, or more, and needs to be
killed dead. We kill it with pg_cancel_backend(), and cpu usage of the
process immediately drops, and the process starts serving other
statements. But the curious thing is the resident size does not drop.
Is this normal? Something to be concerned about? Here's a mild example
(only 2.8 gigs):
# top PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
20108 postgres 16 0 4305m 2.8g 2.8g D 4 8.6 3:12.50 postgres:
production production 10.100.4.11(44200) SELECT
16306 postgres 15 0 4248m 1.5g 1.5g S 0 4.7 0:47.70 postgres:
jira jira 10.100.5.12(57517) idle
28472 postgres 15 0 4249m 1.4g 1.4g S 2 4.6 0:16.18 postgres:
production production 10.100.4.11(48457) idle
# uname -a
Linux xxxx 2.6.18-6-amd64 #1 SMP Thu Dec 25 21:08:54 UTC 2008 x86_64
GNU/Linux