Re: DBMail

2007-07-16 Пенетрантность Pechnikov Alexey
В сообщении от Понедельник 16 июля 2007 14:59 proforg написал(a):
> > > порядка 10-20 активных соединений,
> >
> > Какой пул - в смысле, PgPool или ...?
>
> никакого :) А в чём смысл его использования ?
> Только префорк ? Или он ещё и поможет снизить количесво одноверменно
> запущщеных процессов (сейчас 200-250)

Ага, поможет. Создание и закрытие соединения с базой - процесс не быстрый. В 
то время как при наличии пула база спокойно будет обслуживать порядка тысячи 
одновременных запросов независимо от числа пользователей (без пула порядка 
сотни пользователей, а запросов еще меньше). Одно подключение пула "тянет" 
около 4-5 клиентов (зависит от того, насколько интенсивно они запросы шлют). 
Если одновременно работает не более 50-ти пользователей, 10 соединений пула 
должно хватить. Выигрыш производительности просто огромный (а если еще и софт 
заточить на работу с пулом, вообще сказка).



Re: DBMail

2007-07-16 Пенетрантность proforg

On 7/16/07, Pechnikov Alexey <[EMAIL PROTECTED]> wrote:

> порядка 10-20 активных соединений,
Какой пул - в смысле, PgPool или ...?

никакого :) А в чём смысл его использования ?
Только префорк ? Или он ещё и поможет снизить количесво одноверменно
запущщеных процессов (сейчас 200-250)


> пример плана выполнения запросов:

Такое впечатление, что тело письма лежит в одной таблице с заголовками.
Если так, то кроме огорчений, ждать нечего.


Нет. Таблицы конечно разные.


> postgresql конечно 8.2 а не 8.3 :)

У меня 8.1, со следующим релизом дебиана перейду сразу на 8.3.


> shared_buffers = 512MB
Такой размер буферов требует гигов 8 или 16 оперативки. Поставьте 64 метра
буфер.
> work_mem = 256MB
Аналогично. 256 метров КАЖДОМУ пользователю на его запрос, если одновременно
20 пользователей, нужно 5 гиг ОЗУ. А у вас сколько?..

Поправил :) Это я уже  последние эксперименты увеличивал. Но вообще -
свопа почти нет и при таких настройках.



> я не думаю что тут проблема в структуре  / настройках бд - скорее в
> запросах :)

Как всегда, проблемы не ходят по одиночке. Конечно, операция ILIKE на огромной
таблице будет нереально медленно выполняться, а вот если заголовки писем
сделать отдельной табличкой, будет совсем другое дело. Но и настройки надо
поправить, при текущих постгрес будет думать, что на машине не меньше 8 Гиг
ОЗУ и постоянно попадать в своп (использует знания о количестве ОЗУ на
машине, прикидывая возможности кэширования файлов ОСью и не пытаясь
дублировать эту работу).

Заголовки - в отдельной. Но и количество записей там соотв в разы
больше чем в таблице сообщений - ~30M. Так что джойны получаются
совсем небыстрые. Не говоря уже о ILIKE.



В общем-то, все довольно просто, хотя пока я допер до того, как надо делать,
раза 3 или 4 целиком архитектуру системы переписывал (каждая итерация
занимала примерно полгода времени у 2-х разработчиков). Сейчас использую
связку Pound+AOLServer+Tcl+PostgreSQL+Pltcl. Жизнь прекрасна :-)



вот видимо и придётся слегка переписывать dbmail :)
и спасибо за советы


--
Alexej Bestchiokov
EMail/JID: [EMAIL PROTECTED]
phone: +7 495 7853149


Re: DBMail

2007-07-16 Пенетрантность Pechnikov Alexey
> порядка 10-20 активных соединений,

Какой пул - в смысле, PgPool или ...?

> пример плана выполнения запросов:

Такое впечатление, что тело письма лежит в одной таблице с заголовками. Если 
так, то кроме огорчений, ждать нечего.

> postgresql конечно 8.2 а не 8.3 :)

У меня 8.1, со следующим релизом дебиана перейду сразу на 8.3. 


> shared_buffers = 512MB
Такой размер буферов требует гигов 8 или 16 оперативки. Поставьте 64 метра 
буфер. 

> work_mem = 256MB
Аналогично. 256 метров КАЖДОМУ пользователю на его запрос, если одновременно 
20 пользователей, нужно 5 гиг ОЗУ. А у вас сколько?..

> я не думаю что тут проблема в структуре  / настройках бд - скорее в
> запросах :)

Как всегда, проблемы не ходят по одиночке. Конечно, операция ILIKE на огромной 
таблице будет нереально медленно выполняться, а вот если заголовки писем 
сделать отдельной табличкой, будет совсем другое дело. Но и настройки надо 
поправить, при текущих постгрес будет думать, что на машине не меньше 8 Гиг 
ОЗУ и постоянно попадать в своп (использует знания о количестве ОЗУ на 
машине, прикидывая возможности кэширования файлов ОСью и не пытаясь 
дублировать эту работу).

> > На таком железе терабайтную базу гонять можно.
>
> Как обычно - смотря какие запросы :)

Запросы - какие надо. Главное, правильно спроектировать структуру.

> Впрочем меня всегда интересовал вопрос как они вообще живут эти
> террабайтный базы в реальной жизни.

:-D

По своему опыту пока могу сказать только о базе в несколько десятков Гиг на 
целероне 2,4 ГГц и 256 ОЗУ при 10-20 одновременных пользователях. Два года 
назад поставили "временно" на первый попавшийся комп, так там и живет, ибо 
справляется. Притом, что аналитика выдается в реальном времени и довольно 
сложная (система мерчендайзинга на макрорегион). Как и что устроено, 
рассказываю вот здесь:

http://postgrestips.blogspot.com/2007/06/blog-post.html

В общем-то, все довольно просто, хотя пока я допер до того, как надо делать, 
раза 3 или 4 целиком архитектуру системы переписывал (каждая итерация 
занимала примерно полгода времени у 2-х разработчиков). Сейчас использую 
связку Pound+AOLServer+Tcl+PostgreSQL+Pltcl. Жизнь прекрасна :-)



Re: DBMail

2007-07-16 Пенетрантность proforg

On 16.07.2007, at 12:17, Pechnikov Alexey wrote:




Раз не справляется, значит что-то криво. Схему таблицы и план  
выполнения
покажите. Сколько одновременных пользователей и какой пул БД  
используете?


порядка 10-20 активных соединений,
пример плана выполнения запросов:

dbmail=# explain SELECT message_idnr+1 FROM dbmail_messages WHERE  
mailbox_idnr=37 ORDER BY message_idnr DESC LIMIT 1;

QUERY PLAN
 
--

 Limit  (cost=0.00..24.98 rows=1 width=8)
   ->  Index Scan Backward using dbmail_messages_pkey on  
dbmail_messages  (cost=0.00..78500.38 rows=3142 width=8)

 Filter: (mailbox_idnr = 37)
(записей: 3)

dbmail=# explain SELECT message_idnr FROM dbmail_messages m JOIN  
dbmail_physmessage p ON m.physmessage_id=p.id JOIN dbmail_headervalue  
v on v.physmessage_id=p.id WHERE mailbox_idnr = 645 AND status IN  
(0,1) AND headervalue ILIKE '%charsettest%' ORDER BY message_idnr;

   QUERY PLAN
 


 Sort  (cost=840683.09..840683.10 rows=1 width=8)
   Sort Key: m.message_idnr
   ->  Nested Loop  (cost=0.00..840683.08 rows=1 width=8)
 ->  Nested Loop  (cost=0.00..840679.66 rows=1 width=24)
   ->  Seq Scan on dbmail_headervalue v   
(cost=0.00..840669.16 rows=3 width=8)

 Filter: (headervalue ~~* '%charsettest%'::text)
   ->  Index Scan using dbmail_messages_2 on  
dbmail_messages m  (cost=0.00..3.49 rows=1 width=16)

 Index Cond: (v.physmessage_id = m.physmessage_id)
 Filter: ((mailbox_idnr = 645) AND (status = ANY  
('{0,1}'::integer[])))
 ->  Index Scan using dbmail_physmessage_pkey on  
dbmail_physmessage p  (cost=0.00..3.41 rows=1 width=8)

   Index Cond: (m.physmessage_id = p.id)
(записей: 11)

postgresql конечно 8.2 а не 8.3 :)
конфиг примерно такой:

max_connections = 500
shared_buffers = 512MB
work_mem = 256MB
maintenance_work_mem = 512MB
max_stack_depth = 5MB
max_fsm_pages = 204800
max_fsm_relations = 1

vacuum_cost_delay = 50  # 0-1000 milliseconds
bgwriter_delay = 200ms  # 10-1ms between rounds
bgwriter_lru_percent = 20.0 # 0-100% of LRU buffers  
scanned/round
bgwriter_lru_maxpages = 100 # 0-1000 buffers max written/ 
round
bgwriter_all_percent = 3# 0-100% of all buffers  
scanned/round
bgwriter_all_maxpages = 600 # 0-1000 buffers max written/ 
round
fsync = on  # turns forced  
synchronization on or off
wal_sync_method = fdatasync # the default is the first  
option


enable_seqscan = on
random_page_cost = 1.5  # same scale as above
effective_cache_size = 512MB

я не думаю что тут проблема в структуре  / настройках бд - скорее в  
запросах :)




бд сервер - 2 х Intel(R) Xeon(TM) CPU 2.66GHz, 2Gb RAM, диски scsi


На таком железе терабайтную базу гонять можно.


Как обычно - смотря какие запросы :)
Впрочем меня всегда интересовал вопрос как они вообще живут эти  
террабайтный базы в реальной жизни.


Алексей Бещёков
[EMAIL PROTECTED]
+7 495 7853149





smime.p7s
Description: S/MIME cryptographic signature


Re: DBMail

2007-07-16 Пенетрантность Pechnikov Alexey
> Почти перевёл почтовую базу на dbmail
> не всё ещё проимпортировалось, но пока:
> 30Gb, 1.6М писем, 6000+ пользователей
> imap - не живёт :) бд (postgresql, 8.3) не справляется, хотя оттюнена
> на подобную нагрузку.
> все imap обращщения заканчиваются запросами вида
>  SELECT message_idnr+1 FROM dbmail_messages WHERE mailbox_idnr=82
> ORDER BY message_idnr DESC LIMIT 1
> которые висят по пол часа :)

Раз не справляется, значит что-то криво. Схему таблицы и план выполнения 
покажите. Сколько одновременных пользователей и какой пул БД используете?

>
> что будет когда письма импортируются все (x2) - не хочется даже думать.
> но видимо придётся переписывать запросы / делать триггеры / жёстко всё
> оптимизировать.
>
> бд сервер - 2 х Intel(R) Xeon(TM) CPU 2.66GHz, 2Gb RAM, диски scsi

На таком железе терабайтную базу гонять можно. 



Re: DBMail

2007-07-16 Пенетрантность proforg

On 11/21/06, Alexey Lobanov <[EMAIL PROTECTED]> wrote:

Hi all.

On 21/11/06 04:08, proforg wrote:

>> А вы не проводили нагрузочных тестов его? У меня Dbmail 2.1 при попытке
>> вычитать IMAP-папку со 100К писем по несколько килобайт приказывал долго
>> жить. Сервер был о 2Гб памяти, и dbmail сжирал её всю, уходил в своп, а
>> потом и падал. Письма хранились в Postgres'e на этой же машине.

> А как вел себя в этой ситуации тот же courier ?

У меня самый толстый рабочий фолдер в Cyrus'е - 31К мелких писем, архив
некоей рассылки. Проверил: сплошной полнотекстовый поиск по русскому
слову в локальной сети около 20 секунд, "71 matches found". Сервер
P4-2GHz, 1G памяти, файловая система Reiser 3. Память не отжирал никто.

Раньше этот же архив (20К на тот момент) лежал на домашнем сервере с
P1-133MHz, 64M, ext3. Работало, естественно, помедленнее, но сдохнуть не
пыталось.

100К - надо бы нагенерировать и попробовать...

А.Л.


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]




Возвращщаясь к старой теме.
Почти перевёл почтовую базу на dbmail
не всё ещё проимпортировалось, но пока:
30Gb, 1.6М писем, 6000+ пользователей
imap - не живёт :) бд (postgresql, 8.3) не справляется, хотя оттюнена
на подобную нагрузку.
все imap обращщения заканчиваются запросами вида
SELECT message_idnr+1 FROM dbmail_messages WHERE mailbox_idnr=82
ORDER BY message_idnr DESC LIMIT 1
которые висят по пол часа :)

что будет когда письма импортируются все (x2) - не хочется даже думать.
но видимо придётся переписывать запросы / делать триггеры / жёстко всё
оптимизировать.

бд сервер - 2 х Intel(R) Xeon(TM) CPU 2.66GHz, 2Gb RAM, диски scsi

--
Alexej Bestchiokov
EMail/JID: [EMAIL PROTECTED]
phone: +7 495 7853149


Re: DBMail

2006-11-18 Пенетрантность sergio

Samoylov Mihail wrote:

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

sergio wrote:

Vladimir Prohorov wrote:

Здравствуйте, debian-russian.

Пользовался ли кто этим чудом?

Почему это чудом?
Ну я пользуюсь, и что?

--
Sergio.



А вы не проводили нагрузочных тестов его? У меня Dbmail 2.1 при попытке
вычитать IMAP-папку со 100К писем по несколько килобайт приказывал долго
жить. Сервер был о 2Гб памяти, и dbmail сжирал её всю, уходил в своп, а
потом и падал. Письма хранились в Postgres'e на этой же машине.

А я не пользуюсь нестабильным софтом на сервере. у меня 2.0 и всё работает.

--
Sergio.


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: DBMail

2006-11-18 Пенетрантность Samoylov Mihail
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

sergio wrote:
> Vladimir Prohorov wrote:
>> Здравствуйте, debian-russian.
>>
>> Пользовался ли кто этим чудом?
> 
> Почему это чудом?
> Ну я пользуюсь, и что?
> 
> -- 
> Sergio.
> 
> 
А вы не проводили нагрузочных тестов его? У меня Dbmail 2.1 при попытке
вычитать IMAP-папку со 100К писем по несколько килобайт приказывал долго
жить. Сервер был о 2Гб памяти, и dbmail сжирал её всю, уходил в своп, а
потом и падал. Письма хранились в Postgres'e на этой же машине.

- --
С уважением, Самойлов Михаил,

-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.5 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFFXu+ZJgBoo5/qW1sRAq/2AJ9/4d5rmdCO5Cn3uwrIuZ+VROYkDwCfQXs6
yyBkeQr00rbKBUpuFakaf/k=
=P1Z6
-END PGP SIGNATURE-


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: DBMail

2006-11-18 Пенетрантность sergio

Vladimir Prohorov wrote:

Здравствуйте, debian-russian.

Пользовался ли кто этим чудом?


Почему это чудом?
Ну я пользуюсь, и что?

--
Sergio.


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



DBMail

2006-11-18 Пенетрантность Vladimir Prohorov
Здравствуйте, debian-russian.

Пользовался ли кто этим чудом?

DBMail is made up of several components. A normal MTA (Postfix,
SendMail, QMail, Exim) is used for accepting messages. The MTA hands
the messages over to dbmail-smtp, using a pipe interface, or
dbmail-lmtpd, using LMTP (Local Mail Transport Protocol). These
programs take care of delivering the message into the database.
Messages can be retreived from the database using dbmail-pop3d, using
the POP3 protocol, and dbmail-imapd, using the IMAP4Rev1 protocol.

The whole email is stored in the database. That includes attachments.
The DBMail programs do not have to touch the filesystem to retreive or
insert emails. User information is also stored in the database, so
users do not need an account on the machines DBMail is running on.

deb http://debian.nfgd.net/debian unstable|experimental main

-- 
С уважением,
 Vladimir  mailto:[EMAIL PROTECTED]


Re: Религиозная война IMAP серверов. Cyrus vs Courier vs Dovecot vs dbmail

2006-11-10 Пенетрантность Samoylov Mihail
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Peter Teslenko wrote:
> Приветствую, коллеги.
> 
> Недавно поднимал этот вопрос, но ответов было гораздо меньше, чем про
> "хранилище почты".
> И, все-таки... Какой выбрать? Юзеров хочу полностью завиртуалить и
> засунуть в LDAP.
> 
Доброго дня.

А давайте добавим сюда ещё "vs dbmail". Кто-нибудь его в production
использует?

- --
С уважением, Самойлов Михаил,

-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.5 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFFVFfvJgBoo5/qW1sRAiBoAJ48IvgGvrFFGwpWDSGBQbQhod3m3ACfcyZw
jBiFYwk1JITyEF4LE03j3KQ=
=dRgK
-END PGP SIGNATURE-


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



exim4 & dbmail

2005-11-28 Пенетрантность sergio
есть dbmail'овский пользователь. у него есть куча алясов. В
thunderbird'е они записаны как identities для этого сервера.

хочу: если письмо отправляется на определённый адрес и с одного из
адресов принадлежажих пользователю чтобы from менялся бы на определённый
адрес.

вот одно из решений: в транспорт написать:


headers_rewrite = * "${if and{{eq{${lookup mysql{(SELECT userid FROM
dbmail_users WHERE userid = '${quote_mysql:[EMAIL PROTECTED]') UNION
(SELECT userid FROM dbmail_users where user_idnr = (SELECT deliver_to
FROM dbmail_aliases WHERE alias =
'${quote_mysql:[EMAIL PROTECTED]'))[EMAIL PROTECTED]@sergio.spb.ru}
fail}" f

собсна тут написано, что если юзер -- sergio и to --
[EMAIL PROTECTED] -- то поменять from на [EMAIL PROTECTED]

но
0) это не работает. я не знаю почему ): ( unknown rewrite flag character
'(' (could be missing quotes round replacement
item) )
1) это не красивое решение, красиво было бы через фильтры, но на сколько
я понимаю в фильтрах нельзя обращаться к mysql...

Sergio.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



dbmail 2.0

2005-08-15 Пенетрантность Sergio
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Никто не знает, есть-ли бэкпорты dbmail 2.0 для Саржа?

- --
Sergio.
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.0 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iQCVAwUBQwCrQpsR/RHJrAUrAQL6ewQArhy/QEXl04fh/vGJlmDd3YYzi9QTpmCt
Oi/Z3/9y01PO+JAeRX574RU+MDWJMBom4A2G3naZTIX4mCqN64qDfBdcQoRfYcei
Naql9tLW4qQ/qyOXTunl6CgFDPSM5shtpqggtuni1Q2lvfnkDyyGpxPdt6KnPTpf
H8WCZBkrVhA=
=4Q5w
-END PGP SIGNATURE-


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]