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

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

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

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
Оптимизированные конфиги для Firebird
    #38824247
Фотография Alexey Kovyazin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Плюс добавить "мантру" (DS'a, кажется): размер страничного кеша д.б. равен примерно половине объема физ. памяти.

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

На 3.0 в твоем тесте и вообще ситуация с кэшем более интересная, и эффект от разогрева виден невооруженным взглядом, но с 3.0 мы только начинаем набирать практический оптимизационный опыт - т.к. коллективных разум юзеров в плане создания проблем куда как мощнее силы предвидения разработчиков :)
...
Рейтинг: 0 / 0
Оптимизированные конфиги для Firebird
    #38824265
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Оптимизированные конфиги для Firebird
    #38824538
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Оптимизированные конфиги для Firebird
    #38824549
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

индивидуально, конечно
...
Рейтинг: 0 / 0
Оптимизированные конфиги для Firebird
    #38824560
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Оптимизированные конфиги для Firebird
    #38824608
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

маска назначается процессу целиком, все вопросы к микрософту
...
Рейтинг: 0 / 0
Оптимизированные конфиги для Firebird
    #38824624
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Оптимизированные конфиги для Firebird
    #38824632
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr> маска назначается процессу целиком, все вопросы к микрософту

В каком смысле? Можно и потокам назначать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Оптимизированные конфиги для Firebird
    #38824658
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамВ каком смысле? Можно и потокам назначать.
+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
Оптимизированные конфиги для Firebird
    #38824689
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman> msdn

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

Просто сама мысль непонятна - если
из лени при наличии воркэраунда в
виде двух отдельных процессов - то
ОК, никаких претензий, надо так и
говорить, чего стесняться-то.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Оптимизированные конфиги для Firebird
    #38824740
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у нас используется SetProcessAffinityMask, про нее написал выше. Существует еще SetThreadAffinityMask, но чтобы ее использовать для SS/SC - надо знать какой поток к какой базе относится. При наличии пула потоков (а управляет им сетевой сервер, который один на все базы) это не совсем примитивно, плюс придется переустанавливать аффинити на каждый вызов АПИ (когда поток берется из пула). Я не уверен, что этот геморрой себя окупит. Ну и таки да, лично я предложил бы поднимать свой инстанс на каждую базу. Не в качестве воркэраунда, а вообще.
...
Рейтинг: 0 / 0
Оптимизированные конфиги для Firebird
    #38824911
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Оптимизированные конфиги для Firebird
    #38824932
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И кстати AffinityMask удобней задавать в виде ноликов и еденичек, например для 32-ядер:
00111100111111110000000000001111
и чтобы можно было написать человеко-читаемо:
0011 1100 1111 1111 0000 0000 0000 1111
00111100 11111111 00000000 00001111
...
Рейтинг: 0 / 0
Оптимизированные конфиги для Firebird
    #38824935
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDee,

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

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

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

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

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

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

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

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


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