Re: how to configure my new server

Поиск
Список
Период
Сортировка
От Josh Berkus
Тема Re: how to configure my new server
Дата
Msg-id 200302100935.14455.josh@agliodbs.com
обсуждение исходный текст
Ответ на Re: how to configure my new server  ("philip johnson" <philip.johnson@atempo.com>)
Ответы Re: how to configure my new server
Re: how to configure my new server
Список pgsql-performance
Philip,

>
> someone could come back to first request ?
>

Insistent, aren't you?   ;-)

> > Yes no Raid, but will could change soon

Adding RAID 1+0 could simplify your job enormously.   It would prevent you
from having to figure out what to put on each disk.  If it were my machine,
and I knew that the database was more important than the other services, I'd
build it like this:

Array 1: Disk 1:      18Go Ultra 3 (Ultra 160) SCSI 15 Ktpm
             Disk2 :      18Go Hot Plug Ultra 3 (Ultra 160) SCSI 15 Ktpm

Contains:  Linux, Apache, Swap

Array 2:
 Di:sk3       18Go Hot Plug Ultra 3 (Ultra 160) SCSI 15 Ktpm
 Disk4       18Go Hot Plug Ultra 3 (Ultra 160) SCSI 15 Ktpm

Contains: PostgreSQL and databases

 Disk5       36Go Hot Plug Ultra 3 (Ultra 160) SCSI 15 Ktpm

Contains:  Postgresql log, backup partition.

Alternately:
Put all of the above on one *smart* RAID5 controller, with on-controller
memory and battery.   Might give you better performance considering your disk
setup.

> > how can I put indexes on a seperate disk ?

Move the index object (use the oid2name package in /contrib to find the index)
to a different location, and symlink it back to its original location.   Make
sure that you REINDEX at maintainence time, and don't drop and re-create the
index, as that will have the effect of moving it back to the original
location.

> >>> linux values:
> >>> kernel.shmmni = 4096
> >>> kernel.shmall = 32000000
> >>> kernel.shmmax = 256000000
> > I took a look a the performance archive, and it's not possible to find
> > real info on how to set these 3 values.

Yeah.  Personally, I just raise them until I stop getting error messages from
Postgres.   Perhaps someone on the list could speak to the danger of setting
any of these values too high?

> > I'm surprised that there's no spreadsheet to calculate those values.
> > There are many threads, but it seems that no one is able to find a
> > rule to define values.

That's correct.  There is no rule, because there are too many variables, and
the value of many of those variables is a matter of opinion.  As an
*abbreviated* list:
1) Your processors and RAM; 2) Your drive setup and speed;  3) the frequency
of data reads;  4) the frequency of data writes;  5) the average complexity
of queries;  6) use of database procedures (functions) for DML;   7) your
maintainence plan (e.g. how often can you run VACUUM FULL?);  8) the expected
data population of tables (how many rows, how many tables);  9) your ability
to program for indexed vs. non-indexed queries; 10) do you do mass data
loads? ;  11) is the server being used for any other hihg-memory/networked
applications? ; 12) the expected number of concurrent users; 13) use of large
objects and/or large text fields; etc.

As a result, a set of values that work really well for me might crash your
database.   It's an interactive process.   Justin Clift started a project to
create an automated interactive postgresql.conf tuner, one that would
repeatedly test the speed of different queries against your database,
overnight while you sleep.   However, he didn't get very far and I haven't
had time to help.

> >> 1. How many queries does my database handle per second or minute?
> >> can't say now

This has a big influence on your desired sort_mem and shared_buffer settings.
Make some estimates.

> >>
> >> 2. How big/complex are those queries?
> >
> > Not really complex and big as you can see

OK, so nothing that would require you to really jack up your sort or shared
memory beyond levels suggested by other factors.  However, you don't say how
many rows these queries usually return, which has a substantial effect on
desired sort_mem.

A good, if time-consuming, technique for setting sort_mem is to move it up and
down (from, say 512 to 4096) seeing at what level your biggest meanest
queries slow down noticably ... and then set it to one level just above that.

> > There are more insert/update than read, because I'm doing table
> > synchronization
> > from an SQL Server database. Every 5 minutes I'm looking for change
> > in SQL Server
> > Database.
> > I've made some stats, and I found that without user acces, and only
> > with the replications
> > I get 2 millions query per day

In that case, making sure that your WAL files (the pg_xlog directory) is
located on a seperate drive which *does nothing else* during normal operation
is your paramount concern for performance.  You'll also need to carefully
prune your indexes down to only the ones you really need to avoid slowing
your inserts and updates.

> >> 4. What large tables in my database get queried
> >> simultaneously/together? why this questions ?

If you're not using RAID, it would affect whether you should even consider
moving a particular table or index to a seperate drive.   If you have two
tables, each of which is 3 million records, and they are quried joined
together in 50% of data reads, then one of those tables is a good candidate
for moving to another drive.

Good luck!

--
Josh Berkus
Aglio Database Solutions
San Francisco

В списке pgsql-performance по дате отправления:

Предыдущее
От: "philip johnson"
Дата:
Сообщение: Re: how to configure my new server
Следующее
От: "philip johnson"
Дата:
Сообщение: Re: how to configure my new server