From: | Merlin Moncure <mmoncure(at)gmail(dot)com> |
---|---|
To: | Thom Brown <thom(at)linux(dot)com> |
Cc: | Alexander Farber <alexander(dot)farber(at)gmail(dot)com>, pgsql-general(at)postgresql(dot)org |
Subject: | Re: PostgreSQL 8.4.8 bringing my website down every evening |
Date: | 2011-05-26 03:08:13 |
Message-ID: | BANLkTim7JZnfp5MfPCHj2tSqrTEMyJ3z-g@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Wed, May 25, 2011 at 2:40 PM, Thom Brown <thom(at)linux(dot)com> wrote:
> On 25 May 2011 18:58, Alexander Farber <alexander(dot)farber(at)gmail(dot)com> wrote:
>>
>> Hello fellow PostgreSQL-users,
>>
>> I run a Drupal 7 (+Facebook app) website
>> with a multiplayer flash game and use
>> postgresql-server-8.4.8-1PGDG.rhel5 +
>> CentOS 5.6 64 bit on a Quad-Core/4GB machine.
>>
>> I generally like using PostgreSQL eventhough
>> I'm not an experienced DB-user, but in the recent
>> weeks it gives me a lot of headache bringing
>> my website to a halt every evening (when
>> most players visit the website for a game).
>>
>> I think this is result of having more users
>> and having written few more statistics scripts
>> for them (I use PHP with persistent connections;
>> I use only local PostgreSQL-connections).
>>
>> I suspect if I could configure
>> PostgreSQL accordingly, it would run ok again.
>>
>> During "crashes" when/if I manage to ssh into
>> my server it is barely usable and I see lots
>> of postmaster processes.
>>
>> I have the following settings in pg_hba.conf:
>>
>> local all all md5
>> host all all 127.0.0.1/32 md5
>>
>> And the following changes in postgresql.conf:
>>
>> max_connections = 512
>> shared_buffers = 32MB
>> log_destination = 'stderr'
>> log_directory = 'pg_log'
>> log_filename = 'postgresql-%a.log'
>> logging_collector = on
>> log_rotation_age = 1d
>> log_rotation_size = 0
>> log_truncate_on_rotation = on
>>
>> My Apache httpd.conf:
>> <IfModule prefork.c>
>> StartServers 10
>> MinSpareServers 12
>> MaxSpareServers 50
>> ServerLimit 300
>> MaxClients 300
>> MaxRequestsPerChild 4000
>> </IfModule>
>>
>> I look into
>> /var/lib/pgsql/data/pg_log/postgresql-Wed.log
>> but don't see anything alarming there.
>>
>> WARNING: nonstandard use of \\ in a string literal at character 220
>> HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
>> WARNING: nonstandard use of \\ in a string literal at character 142
>> HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
>> WARNING: nonstandard use of \\ in a string literal at character 204
>> HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
>> etc.
>>
>> Does anybody please have any advice?
>>
>> Do I have to apply any shared memory/etc. settings
>> to CentOS Linux system? When I used OpenBSD some
>> years ago, there where specific instructions to apply to
>> its kernel/sysctl.conf in the postgresql port readme.
>
> Well your shared_buffers are likely to be far too low. How much memory do
> you have available in your system?
I doubt this will help. For many systems, most even, especially those
not doing a lot of writing, the number of shared buffers is
irrelevant. The first step to solving the problem is determining
what the problem is.
during high load:
1. cpu bound? check top cpu usage during
2. i/o bound? check top wait%
3. scaling issues? # active connections over 20 or so can be
dangerous. consider installing a pooler (my favorite is pgbouncer).
also monitor vmstat for context switches
4. lousy queries? enable min_duration_statement in logs and take note
of queries running over 20-50ms
5. something else? when are your backups running? what else is
happening at that time?
merlin
From | Date | Subject | |
---|---|---|---|
Next Message | Merlin Moncure | 2011-05-26 03:16:58 | Re: max_connections proposal |
Previous Message | Craig Ringer | 2011-05-26 02:58:21 | max_connections proposal |