Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Оптимизированные конфиги для Firebird / 25 сообщений из 67, страница 1 из 3
03.12.2014, 21:55
    #38824201
Alexey Kovyazin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизированные конфиги для Firebird
Сабж, собственно: http://ib-aid.com/ru/optimized-firebird-configuration/

Отзывы, замечания и предложения приветствуются.

With best regards,
Alexey Kovyazin
www.ibsurgeon.com
www.ibase.ru/techsupp.htm
...
Рейтинг: 0 / 0
03.12.2014, 22:45
    #38824232
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизированные конфиги для Firebird
Вытащу таки сюда то, что у мну сусеках записано было. И предлагаю затолкать туда в качестве шпоры :-)

0) Бысто вытащить все только незакомментаренные параметры конфига, без "#-мусора":
Код: plaintext
1.
2.
nix: grep "^[^#;]" firebird.conf | sort
win: findstr /r /c:"^[^#;]" firebird.conf +| sort

1) Про LockHashSlots , http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=993274&msg=13688627
kdvпо LockMemSize еще запомните формулу (автор - dimitr)

LockMemSize >= Cache_pages * max_connections_count * 100

А насчет LockHashSlots Пешков давно заявлял, что уже можно ставить 10007, фактически в качестве "дефолтного" значения. 2) Опять про LockHashSlots , http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1075167&msg=15519745
dimitrТаблоидНа стр. 10 по-прежнему торчит старое LockHashSlots = 1009.
Этот дефолт - он действительно устарел (так считает Алекс, если смотреть на ссылку от kdv) или нет ?"старое" - это 101 слот, а 1009 слотов являются дефолтом не так и давно, последние 5 лет. Насчет "устаревшего" - все зависит от числа коннектов, давай посчитаем вместе: 1009 слотов в среднем по 10 коллизий это 10К страниц (остальные типы локов для простоты игнорируем). Дефолтный размер кеша SC/CS - 75 страниц в 2.х и 256 страниц в 3.0. Получается, что дефолт рассчитан на ~130 коннектов в 2.х и ~40 коннектов в 3.0. На самом деле несколько меньше. Мое личное мнение - в 3.0 можно и увеличить, а в 2.5 число слотов вполне адекватно размеру кеша.3) Про LockMemSize , http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1092754&msg=15971603
dimitrв первом приближении: число страниц кеша * число коннектов в пике * 100 байт. А проще мониторить параметр Used лок-таблицы в течении дня и устанавливать LockMemSize в значение раза в два (чтобы с запасом) более найденного.4) Про TempBlockSize, TempCacheLimit , а также их "влияние" на GTT:
http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1099687&msg=16152458 dimitrэти параметры (TempBlockSize и TempCacheLimit) на GTT никак не влияют :-) А TempBlockSize я бы советовал выставлять не более 5% от TempCacheLimit и не менее 1МБ (дефолтное значение).
Плюс добавить "мантру" (DS'a, кажется): размер страничного кеша д.б. равен примерно половине объема физ. памяти.
Плюс добавить инфу о том, что если в CS/SC команда fb_lock_print -c -d <database> | grep -i "hash lengths" выдаёт для "min/avg/max" значения больше, чем M1 / M2 / M3, то надо делать "то-то и то-то" (M1, M2, M3 - не помню точно их; но max был меньше 15-20).

ЗЫ. Еще неплохо бы скопипастить туда (с разрешения автора, ес-сно) статью про настройку keep-alive'ов в nix/win. Эти параметры влияют на время отвала мертвяков, их дефолтные значения могут приводить к "недоразумениям".
...
Рейтинг: 0 / 0
03.12.2014, 23:04
    #38824247
Alexey Kovyazin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизированные конфиги для Firebird
> Плюс добавить "мантру" (DS'a, кажется): размер страничного кеша д.б. равен примерно половине объема физ. памяти.

Ты извини, но мы другим богам молимся :)
Размер страничного кэша до 2.5 включительно на SuperServer (речь то про него?) ставить надо в 10000. Якобы есть процедуры разогрева кэша и прочая-прочая для больших значений, но эффект от такого тюнинга минимальный, а вот геморроя и тестов выше крыши.
Для Classic и SuperClassic совет тем более не годится - намедни ребята из Австралии обратились с БД в 5Гб и 128Гб ОЗУ, с 80 коннектами. По этой логике, надо каждому коннекту воткнуть по 50 тысяч буферов? :)
И у россиян такое видели, в Инфоклинике.

На 3.0 в твоем тесте и вообще ситуация с кэшем более интересная, и эффект от разогрева виден невооруженным взглядом, но с 3.0 мы только начинаем набирать практический оптимизационный опыт - т.к. коллективных разум юзеров в плане создания проблем куда как мощнее силы предвидения разработчиков :)
...
Рейтинг: 0 / 0
03.12.2014, 23:22
    #38824265
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизированные конфиги для Firebird
Alexey KovyazinРазмер страничного кэша до 2.5 включительно на SuperServer (речь то про него?) ставить надо в 10000. Якобы есть процедуры разогрева кэша и прочая-прочая для больших значений, но эффект от такого тюнинга минимальный, а вот геморроя и тестов выше крыши .А это не устаревшие страшилки ? Какой там гемор, в чём он ?
Я вот помню, что Главный Источник Света сказал, что это давно уже пофиксено, с 2.0 вроде. Не могу найти сиё, но точно помню разговор на эту тему.

Alexey KovyazinДля Classic и SuperClassic совет тем более не годится - намедни ребята из Австралии обратились с БД в 5Гб и 128Гб ОЗУ, с 80 коннектами. По этой логике, надо каждому коннекту воткнуть по 50 тысяч буферов? :)
И у россиян такое видели, в Инфоклинике.Гм... ну, а какой тогда верхний лимит-то для CS/SC ? 10 тыс страниц ?

Alexey KovyazinНа 3.0 в твоем тесте и вообще ситуация с кэшем более интересная, и эффект от разогрева виден невооруженным взглядом, но с 3.0 мы только начинаем набирать практический оптимизационный опыт - т.к. коллективных разум юзеров в плане создания проблем куда как мощнее силы предвидения разработчиков :)Эффект от разогрева в 3.0 начинает проявляться только при большом числе коннектов (больше 175), а на 2.5 - сразу (скрин - с презентухи к конфе-2014)
...
Рейтинг: 0 / 0
04.12.2014, 10:15
    #38824538
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизированные конфиги для Firebird
Alexey Kovyazin,

про конфиг трёшки. Как известно трёшку можно конфигурировать для каждой БД отдельно в файле databases.conf. Например вот так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
mydb = d:\fb\fb30\data\mydb.fdb {
	TempBlockSize = 2M
	TempCacheLimit = 512M
	DefaultDbCachePages = 32K
	LockMemSize = 5M
}

mydb2 = d:\fb\fb30\data\mydb.fdb {
	TempCacheLimit = 256M
	DefaultDbCachePages = 8K
}

Кстати тут возник такой вопрос: в суперсервере страничный кэш выделяется индивидуально для каждой БД? Если нет то какой будет итоговый размер страничного кэша в указанной конфигурации и будет ли кэш одной БД вытесняться в процессе работы с другой?
...
Рейтинг: 0 / 0
04.12.2014, 10:21
    #38824549
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизированные конфиги для Firebird
Симонов Денис,

индивидуально, конечно
...
Рейтинг: 0 / 0
04.12.2014, 10:29
    #38824560
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизированные конфиги для Firebird
dimitr,

ещё один вопросик

firebird.conf# ===========================
# Engine Settings
# ===========================
#
# ----------------------------
# Which CPUs should be used (Windows Only)
#
# In an SMP system, sets which processors can be used by the server.
# The value is taken from a bit map in which each bit represents a CPU.
# Thus, to use only the first processor, the value is 1. To use both
# CPU 1 and CPU 2, the value is 3. To use CPU 2 and CPU 3, the value
# is 6. The default value is 0 - no affinity will be set.
#
# Type: integer
#
#CpuAffinityMask = 0

Судя по комментам этот параметр распространяется только на движок в целом. А нельзя ли сделать этот параметр индивидуальным для каждой БД? Например у меня есть 12 ядерный процессор. Я хочу что бы первая БД использовала 8 ядер процессора, а вторая оставшиеся 4.
...
Рейтинг: 0 / 0
04.12.2014, 11:12
    #38824608
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизированные конфиги для Firebird
Симонов Денис,

маска назначается процессу целиком, все вопросы к микрософту
...
Рейтинг: 0 / 0
04.12.2014, 11:23
    #38824624
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизированные конфиги для Firebird
Hello, Alexey Kovyazin!
You wrote on 4 декабря 2014 г. 11:17:28:

Alexey Kovyazin> Отзывы, замечания и предложения
приветствуются. 1.5 classic.
DefaultDbCachePages = 512оно конечно лучше чем 75,
но весьма спорно.
SortMemBlockSize = 1048576
SortMemUpperLimit = 77108864ничем не отличаются от дефолтных.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
04.12.2014, 11:25
    #38824632
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизированные конфиги для Firebird
dimitr> маска назначается процессу целиком, все вопросы к микрософту

В каком смысле? Можно и потокам назначать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
04.12.2014, 11:44
    #38824658
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизированные конфиги для Firebird
Гаджимурадов РустамВ каком смысле? Можно и потокам назначать.
+1
msdnThread Affinity

Thread affinity forces a thread to run on a specific subset of processors. Setting thread affinity should generally be avoided, because it can interfere with the scheduler's ability to schedule threads effectively across processors. This can decrease the performance gains produced by parallel processing. An appropriate use of thread affinity is testing each processor.
...
Рейтинг: 0 / 0
04.12.2014, 11:57
    #38824689
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизированные конфиги для Firebird
wadman> msdn

Да не надо Диме МСДН цитировать,
он и сам его читать умеет, благо там
всего 2 функции понадобятся, AFAIU.

Просто сама мысль непонятна - если
из лени при наличии воркэраунда в
виде двух отдельных процессов - то
ОК, никаких претензий, надо так и
говорить, чего стесняться-то.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
04.12.2014, 12:36
    #38824740
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизированные конфиги для Firebird
у нас используется SetProcessAffinityMask, про нее написал выше. Существует еще SetThreadAffinityMask, но чтобы ее использовать для SS/SC - надо знать какой поток к какой базе относится. При наличии пула потоков (а управляет им сетевой сервер, который один на все базы) это не совсем примитивно, плюс придется переустанавливать аффинити на каждый вызов АПИ (когда поток берется из пула). Я не уверен, что этот геморрой себя окупит. Ну и таки да, лично я предложил бы поднимать свой инстанс на каждую базу. Не в качестве воркэраунда, а вообще.
...
Рейтинг: 0 / 0
04.12.2014, 14:33
    #38824911
NickDee
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизированные конфиги для Firebird
dimitrНу и таки да, лично я предложил бы поднимать свой инстанс на каждую базу. Не в качестве воркэраунда, а вообще.
Или написать типа такого:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
mydb = d:\fb\fb30\data\mydb.fdb {
    RemotePort = 5000
    AffinityMask = 7
    WireCompression = true
    AuthServer = Srp
    SharedCache = true
    SharedDatabase = false

    TempBlockSize = 2M
    TempCacheLimit = 512M
    DefaultDbCachePages = 32K
    LockMemSize = 5M
}

otherdb = d:\fb\fb30\data\otherdb.fdb {
    RemotePort = 5001
    AffinityMask = 1
    WireCompression = false
    AuthServer = Legacy_Auth
    SharedCache = false
    SharedDatabase = true

    TempCacheLimit = 256M
    DefaultDbCachePages = 8K
}

otherdb2 = d:\fb\fb30\data\otherdb2.fdb {
    RemotePort = 5001
    AffinityMask = 3
    WireCompression = true
    AuthServer = Legacy_Auth
    SharedCache = true
    SharedDatabase = true

    TempCacheLimit = 256M
    DefaultDbCachePages = 8K
}
чтобы инстансы на портах 5000 и 5001 поднялись сами :)
...
Рейтинг: 0 / 0
04.12.2014, 14:42
    #38824932
NickDee
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизированные конфиги для Firebird
И кстати AffinityMask удобней задавать в виде ноликов и еденичек, например для 32-ядер:
00111100111111110000000000001111
и чтобы можно было написать человеко-читаемо:
0011 1100 1111 1111 0000 0000 0000 1111
00111100 11111111 00000000 00001111
...
Рейтинг: 0 / 0
04.12.2014, 14:43
    #38824935
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизированные конфиги для Firebird
NickDee,

ага а кто инициатор их подъёма?
...
Рейтинг: 0 / 0
04.12.2014, 14:46
    #38824940
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизированные конфиги для Firebird
NickDeeИли написать типа такого
фантазии оставь себе
...
Рейтинг: 0 / 0
04.12.2014, 14:54
    #38824955
NickDee
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизированные конфиги для Firebird
Симонов ДенисNickDee,

ага а кто инициатор их подъёма?
возможно тот, кто открывает порт 3050 :) Но разработчикам лучше знать. Я просто со стороны пользователя говорю. Пользователю удобней чтобы был один инсталл и один сервис, и тюнить его он готов в рамках дозволенного разработчиками. А вот просто инсталлировать ещё один инстанс чтобы разнести две базы на разные процессоры или чтобы разделить SS и CS - это уже для многих челендж.
...
Рейтинг: 0 / 0
04.12.2014, 15:38
    #38825035
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизированные конфиги для Firebird
NickDeeПользователю удобней чтобы был один инсталл и один сервис
Тогда им на Оракул с его "один сервер - одна БД".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
04.12.2014, 16:52
    #38825172
NickDee
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизированные конфиги для Firebird
Dimitry SibiryakovNickDeeПользователю удобней чтобы был один инсталл и один сервис
Тогда им на Оракул с его "один сервер - одна БД".

Удобней чтобы был один инсталл и один сервис на все базы, как сейчас. И для гибкости и секюрности нужно к этому добавить возможность поднимать инстансы с собственной конфигурацией, в том числе имеющим свой порт, свой IpcName, свою архитектуру, свою систему аутентификации, свои трэйсы, свои логи и пр.

Хотя может и удобней будет делать копию каталога FB для каждой такой базы, и настраивать там глобальный конфиг, регистрировать и запускать отдельный сервис, как сейчас в FB 2.5. Ведь сейчас в 2.5 если люди хотят запустить одну базу как SS, а другую как CS, то они просто молча делают копию FB, правят конфиг, инсталлируют два инстанса на разных портах и всё. Каждый кто хочет одновременно работать с разными архитектурами делает именно так. Все пользователи при первой же потребности проделывают это на раз-два, там делов то на минуту - скопировал, подправил конфиг, зарегистрировал сервис с нужными параметрами (регистрируется элементарно - нужно с firebirdsql.org скачать архив с сервером, скопировать себе install_classic.bat или install_super.bat и запустить нужный с нужным параметром). Т.е. догадается и справится каждый :) И справлялся уже не раз :)
...
Рейтинг: 0 / 0
04.12.2014, 17:17
    #38825206
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизированные конфиги для Firebird
NickDeeВедь сейчас в 2.5 если люди хотят запустить одну базу как SS, а другую как CS, то они просто молча делают копию FBЗачем копию ???

Если ты не знаешь, как указать листенеру свой порт, это не значит, что это не возможно и никто другой об этом не знает.
...
Рейтинг: 0 / 0
04.12.2014, 18:13
    #38825306
NickDee
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизированные конфиги для Firebird
hvladNickDeeВедь сейчас в 2.5 если люди хотят запустить одну базу как SS, а другую как CS, то они просто молча делают копию FBЗачем копию ???

Если ты не знаешь, как указать листенеру свой порт, это не значит, что это не возможно и никто другой об этом не знает.
Так я и говорю что все пользователи на раз-два сумеют.
Подскажи как на раз-два для дефолтной инсталляции FB 2.5 запустить три листенера: первый как SS (5000), второй как CS (5001), третий как SC (5002). Каждый со своим конфигом, естественно.
И как это будет для FB3.
...
Рейтинг: 0 / 0
04.12.2014, 19:28
    #38825434
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизированные конфиги для Firebird
NickDee,

fbserver -a -i -p 5000
fb_inet_server -a -i -p 5001
fb_inet_server -a -m -i -p 5002

если нужны свои конфиги и\или сервисы - изучай ком строку.
...
Рейтинг: 0 / 0
04.12.2014, 21:04
    #38825503
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизированные конфиги для Firebird
hvladизучай ком строкуЭто что ж мне теперь и доку читать??? Доку читают "неудачнеги"!
...
Рейтинг: 0 / 0
04.12.2014, 21:12
    #38825507
miwaonline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизированные конфиги для Firebird
Ivan_Pisarevskyhvladизучай ком строкуЭто что ж мне теперь и доку читать??? Доку читают "неудачнеги"!
Так он же принципиально «имеет право не хотеть знать»©
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Оптимизированные конфиги для Firebird / 25 сообщений из 67, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]