Обсуждение: FW: URGENT: pgsql on the web server - memory problems....

Поиск
Список
Период
Сортировка

FW: URGENT: pgsql on the web server - memory problems....

От
"Nikolay Mijaylov"
Дата:


--------------------------------------------------------------
The reboots are for hardware upgrades!
"http://www.nmmm.nu"; < nmmm@nmmm.nu >



-----Original Message-----
From: Nikolay Mijaylov [mailto:nmmm@nmmm.nu]
Sent: Thursday, October 05, 2000 1:28 PM
To: pgsql-general@postgresql.org
Subject: URGENT: pgsql on the web server - memory problems....


Hi all
I;m not sure how to explain this

we have a web server with several clients which uses PostgreSQL. Currently v
ersion 7.0.2

the server is linux machine with 64MB RAM and 200 MB swap on the disk. One H
DD partition with free disk space about 1.5 GB.

i started the server with:
postmaster -N 64 -B 256

Unfortunately one of our clients runs wery big database and very big (fuckin
' strange complex) queries using PHP.

The problem is that PHP is auto killing after a while (1-2 min), but the pos
tgres backend process stay (and works about 2 or many more hours). Soon all
Linux is filled with 64 postgres processes, free memory is 0 and Linux, free
ze :)

These queries freeze our computer and it stops responding. The only way we c
an do is to press "reset" button.

My question is : is there a way to limit the memory (and CPU time) used by p
ostgres processes by our clients. Can we make auto kill like in PHP?

I play with ulimit and think it is not a such a good idea....
For a moment I stop this client and do

postmaster -N 24 -B 64

...

Any Suggestions?

Thank you


--------------------------------------------------------------
The reboots are for hardware upgrades!
"http://www.nmmm.nu"; < nmmm@nmmm.nu >




Re: FW: URGENT: pgsql on the web server - memory problems....

От
Gunnar R|nning
Дата:
"Nikolay Mijaylov" <pg@nmmm.nu> writes:

> The problem is that PHP is auto killing after a while (1-2 min), but the pos
> tgres backend process stay (and works about 2 or many more hours). Soon all
> Linux is filled with 64 postgres processes, free memory is 0 and Linux, free
> ze :)
>

The postgres backend processes should die when the connections are
closed. Are you sure that the process that runs PHP doesn't keep the
connections open ? You should check open ports using netstat -a and maybe
go on using lsof to check the client processes.

regards,

    Gunnar

Re: FW: URGENT: pgsql on the web server - memory problems....

От
Gunnar R|nning
Дата:
"Nikolay Mijaylov" <nmmm@nmmm.nu> writes:

> Thank for responce.
>
> the php is installed as CGI-BIN executable. I think "keep the connections
> open" option is not applicable here. I do this because every user works
> under its own uid and gid, instead all under "nobody".
>
> i dont have any idea what lsof is...
>
> I will try with netstat, but I was used "ps -axef" and "top".
>

This is what I do on Redhat Linux 6.2, if you are on another platform you
might not have the lsof utility by default.

Use the command :

# netstat -a | grep postgres
tcp        0      0 localhost:postgres      localhost:1052          ESTABLISHED
tcp        0      0 localhost:1052          localhost:postgres      ESTABLISHED
tcp        0      0 localhost:postgres      localhost:1044          ESTABLISHED
tcp        0      0 localhost:1044          localhost:postgres      ESTABLISHED
tcp        0      0 localhost:postgres      localhost:1035          ESTABLISHED
tcp        0      0 localhost:1035          localhost:postgres      ESTABLISHED
tcp        0      0 *:postgres              *:*                     LISTEN

To list all connections to the backend. If you don't have postgres in
/etc/services replace postgres with the portnumber the backend is listening
to. You should see one connection here for every backend running.
From the output of this command I can see that one of the postgres
clients have connection open at port 1052, so I can use lsof to find out
which process this is :

#  /usr/sbin/lsof -i @localhost:1052
COMMAND   PID     USER   FD   TYPE DEVICE SIZE NODE NAME
java      855   nobody   33u  IPv4   1134       TCP localhost:1052->localhost:po
stgres (ESTABLISHED)
java      856   nobody   33u  IPv4   1134       TCP localhost:1052->localhost:po
stgres (ESTABLISHED)
java      857   nobody   33u  IPv4   1134       TCP localhost:1052->localhost:po
stgres (ESTABLISHED)
java      858   nobody   33u  IPv4   1134       TCP localhost:1052->localhost:po
stgres (ESTABLISHED)
java      859   nobody   33u  IPv4   1134       TCP localhost:1052->localhost:po
stgres (ESTABLISHED)
java      860   nobody   33u  IPv4   1134       TCP localhost:1052->localhost:po
stgres (ESTABLISHED)
postmaste 871 postgres    5u  IPv4   1135       TCP localhost:postgres->localhos
t:1052 (ESTABLISHED)


Here I see that it is my Java servlet process that has the open
connection.[The reason to all the "processes" on this output is because I
use native threads on Linux and this are LWPs].

Similarly you should be able to find the processes that is keeping open
connections to the postgres backend.

Regards,

    Gunnar

RE: FW: URGENT: pgsql on the web server - memory problems....

От
"Nikolay Mijaylov"
Дата:
Thank for responce.

the php is installed as CGI-BIN executable. I think "keep the connections
open" option is not applicable here. I do this because every user works
under its own uid and gid, instead all under "nobody".

i dont have any idea what lsof is...

I will try with netstat, but I was used "ps -axef" and "top".

---------------
p.p.
can you told me also how I can use ulimit to limit all postmaster children's
memory ? I mean can i "say" lets all pg uses 40 MB RAM (postmaster and
children)

Nikolay Mijaylov
--------------------------------------------------------------
The reboots are for hardware upgrades!
"http://www.nmmm.nu"; < nmmm@nmmm.nu >



-----Original Message-----
From: pgsql-general-owner@hub.org [mailto:pgsql-general-owner@hub.org]On
Behalf Of Gunnar R|nning
Sent: Thursday, October 05, 2000 4:35 PM
To: Nikolay Mijaylov
Cc: pgsql-general@postgresql.org
Subject: Re: [GENERAL] FW: URGENT: pgsql on the web server - memory
problems....


"Nikolay Mijaylov" <pg@nmmm.nu> writes:

> The problem is that PHP is auto killing after a while (1-2 min), but the
pos
> tgres backend process stay (and works about 2 or many more hours). Soon
all
> Linux is filled with 64 postgres processes, free memory is 0 and Linux,
free
> ze :)
>

The postgres backend processes should die when the connections are
closed. Are you sure that the process that runs PHP doesn't keep the
connections open ? You should check open ports using netstat -a and maybe
go on using lsof to check the client processes.

regards,

    Gunnar