Забързване(тунинговане) на firebird-a.

Въпроси, мнения и предложения свързани с модула.

Модератори: detelin, mIRCata

airking
Мнения: 422
Регистриран: 10-11-2004 21:01
Име: Иван Иванов

Забързване(тунинговане) на firebird-a.

Мнение от airking » 03-10-2008 16:03

С помоща на програмистите успяхме да вдигнем скороста и бързодействието на firebird servera. Така някой операции в Атон-а като анулиране на фактура, продажба, а можеби би и анулиране на прехвърляне(не съм го пробвал още) спада 4-5 пъти времето. Прикачам тука конфигурационния файл със настройките.
firebird.rar
(8.5 KиБ) Свален 1008 пъти
П.С.
DefaultDbCachePages = 32768 в момента е така настроена за по бързи и по мощни компютри.
DefaultDbCachePages = 16384 пак работи добре ама е за предпочитане на по бавни компютри с по малко рам.
Последна промяна от airking на 03-10-2008 16:07, променено общо 1 път.

kondev
Site Admin
Мнения: 2187
Регистриран: 02-11-2004 17:23
Име: Петър Кондев
Контакти:

Re: Забързване(тунинговане) на firebird-a.

Мнение от kondev » 03-10-2008 16:06

Постижението е сериозно, затова правя темата важна с молба към всеки, който го е пробвал да си даде мнението.
Преструвай се на умен - мълчи по-често!

Потребителски аватар
mIRCata
Admin
Мнения: 1065
Регистриран: 15-11-2004 15:25
Име: инж. Мирослав Джоров
Местоположение: Тайна майна
Контакти:

Re: Забързване(тунинговане) на firebird-a.

Мнение от mIRCata » 03-10-2008 16:16

Тъй като конф. файл съдържа и някой настройки типични за теб(т.е са за определена станция примерно порта за събитията), които друг може да не иска или са различни, може би е по-добре да сложим само настройките, които променихме.
Те са:
DefaultDbCachePages = 32768
TcpRemoteBufferSize = 16384
LockMemSize = 4194304
LockHashSlots = 3571

Държа да отбележа, че на последната настройка стойността 3571 може да бъде въведена само ако версията на сървъра е 2.1 нагоре. За сървърите с по-ранни версии макс. стойност е 2039 - защо е тка си пише в коментарите на файла до променливата.
Относно големината на страниците - когато правите backup/restore на базата данни най-добре е големината на страницата да отговаря на големината на файловата система. За WinXP с NTFS по подразбиране е 4К(4096).

За стойността на първата настройка - умножете числото по големината на страниците на базата данни (2,4,8 или 16К) и ще получите размера в КВ, който Firebird сървъра ще заеме като памет при връзка с базата, така че може да го намалите, ако няма достатъчно рам на сървъра. Числото най-добре да е кратно на 1024 х степен на 2-ката - 1024,2048,4096 и т.н

Друг съвет за подобряване на скоростта на моменти, е ако се използва система за backup на базата данни, то е добре самия файл да се записва на диск, отделен от този където се намира базата данни. Така се ускорява скоростта на четене и запис на архива. При по-големи бази, където обема прочетена информация е голям и се правят архиви в работно време може да облекчи пристъпите на забавяне на системата.

airking
Мнения: 422
Регистриран: 10-11-2004 21:01
Име: Иван Иванов

Re: Забързване(тунинговане) на firebird-a.

Мнение от airking » 03-10-2008 16:19

Е друго си е да ме допълни програмист :D

rad
Мнения: 663
Регистриран: 12-11-2004 10:48
Име: инж. Рад Площаков
Местоположение: Варна, България
Контакти:

Re: Забързване(тунинговане) на firebird-a.

Мнение от rad » 08-10-2008 08:44

Може ли ламерски въпрос:
-Има ли опция да се пусне фаербърда да работри на два и повече процесора(ядра)

Защо питам - като съм наблюдавал натоварващи операции- Преизчисляване, големи справки.... (на двуядрен процесор) - едното ядро е на 100%, а другото седи на 10-ина - почти само от кърнела е заето => средната натовареност на процесора рядко качва до 60%.
:roll:
Изображение

Потребителски аватар
mIRCata
Admin
Мнения: 1065
Регистриран: 15-11-2004 15:25
Име: инж. Мирослав Джоров
Местоположение: Тайна майна
Контакти:

Re: Забързване(тунинговане) на firebird-a.

Мнение от mIRCata » 08-10-2008 11:53

Да. CpuAffinityMask. Някъде из форума съм писал и как точно се настройва. Т.е как да си сметнеш стойността, която да се напише.
Друг е въпроса колко добре се справя, защото имаше някакъв проблем с windows и неговото разпределение на задачите между процесорите/ядрата.
Потърси в нета и прочети и описанието в конфигурационния файл.

detelin
Мнения: 766
Регистриран: 09-11-2004 19:52
Име: Детелин Илиев
Местоположение: Несебър
Контакти:

Re: Забързване(тунинговане) на firebird-a.

Мнение от detelin » 08-10-2008 22:03

Това последното не работи много добре, при афинити = 3 би трябвало да работи на 2-те ядра, но няма никаква разлика или поне аз не видях такава

airking
Мнения: 422
Регистриран: 10-11-2004 21:01
Име: Иван Иванов

Re: Забързване(тунинговане) на firebird-a.

Мнение от airking » 09-10-2008 11:39

А с другите по горните настройки има ли при теб някаква разлика?

detelin
Мнения: 766
Регистриран: 09-11-2004 19:52
Име: Детелин Илиев
Местоположение: Несебър
Контакти:

Re: Забързване(тунинговане) на firebird-a.

Мнение от detelin » 09-10-2008 13:41

Не съм пробвал още :oops:

radoslav.radulov
Мнения: 113
Регистриран: 04-04-2007 10:08

Re: Забързване(тунинговане) на firebird-a.

Мнение от radoslav.radulov » 04-06-2009 07:40

Server:ОС Linux Ubuntu Server 9.04
CPU: Core 2 Duo 2.2Ghz
2GB RAM DDR2 800
2 x 500Gb WD в RAID 1

Tasks: 88 total, 2 running, 86 sleeping, 0 stopped, 0 zombie
Cpu(s): 6.1%us, 0.2%sy, 0.0%ni, 93.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 2060212k total, 1976564k used, 83648k free, 25460k buffers
Swap: 9765496k total, 2512k used, 9762984k free, 1391296k cached

Версия на Aton 1.3.1079.948
Около 19 000 продукта.
Около 10 000 контрагента
Mинимум 5 активни users.

Това са настроките на firebird.conf

DefaultDbCachePages = 32768
TempBlockSize = 268435456
TempCacheLimit = 335544320
TcpRemoteBufferSize = 16384
LockMemSize = 33554432
LockHashSlots = 3571

Разлика в скоростта невиждам.
Къде греша и какво може още да се направи за оптимизация?
Не ПРОБВАЙ това в къщи.
Изображение

Потребителски аватар
stoar08
Мнения: 1548
Регистриран: 09-11-2004 08:15
Име: Стоян Арабаджиев
Местоположение: Самоков

Re: Забързване(тунинговане) на firebird-a.

Мнение от stoar08 » 04-06-2009 13:11

Classic или Super Server ползваш? С тези 2 GB потребление на RAM прилича на classic, за който тези настройки са вредни :)


TempBlockSize = 268435456

Това е ... неправилно. Тази настройка указва на какви "порции" се заделя RAM. Според мен е крайно непрактично да се прилагат стойности над 33554432, а при теб е почти колкото максималното позволено (възможно е да иска да си задели, но да се "въздържа" за да не прескача главното ограничение)
Моля ви, като прочетете тема пишете по едно мнение да не ви търся по icq/телефон после ...

Потребителски аватар
mIRCata
Admin
Мнения: 1065
Регистриран: 15-11-2004 15:25
Име: инж. Мирослав Джоров
Местоположение: Тайна майна
Контакти:

Re: Забързване(тунинговане) на firebird-a.

Мнение от mIRCata » 04-06-2009 13:23

stoar08 написа:Classic или Super Server ползваш? С тези 2 GB потребление на RAM прилича на classic, за който тези настройки са вредни :)
TempBlockSize = 268435456

Това е ... неправилно. Тази настройка указва на какви "порции" се заделя RAM.
Аз съм го подвел. Бях останал с впечатление, че тази опция е за начално заделяне на памет за сортиране за цялата база, а не за отделните сортировки. :oops:

За всички, които са правели промени по настройките на Firebird-а при конвертирането на базите сложете тази настройка на 16777216 или 33554432, а не както беше описано на 256МВ.

radoslav.radulov
Мнения: 113
Регистриран: 04-04-2007 10:08

Re: Забързване(тунинговане) на firebird-a.

Мнение от radoslav.radulov » 04-06-2009 13:48

stoar08 написа:Classic или Super Server ползваш? С тези 2 GB потребление на RAM прилича на classic, за който тези настройки са вредни :)


TempBlockSize = 268435456

Това е ... неправилно. Тази настройка указва на какви "порции" се заделя RAM. Според мен е крайно непрактично да се прилагат стойности над 33554432, а при теб е почти колкото максималното позволено (възможно е да иска да си задели, но да се "въздържа" за да не прескача главното ограничение)
Със Super съм.
А каква е разликата?
Не ПРОБВАЙ това в къщи.
Изображение

Потребителски аватар
mIRCata
Admin
Мнения: 1065
Регистриран: 15-11-2004 15:25
Име: инж. Мирослав Джоров
Местоположение: Тайна майна
Контакти:

Re: Забързване(тунинговане) на firebird-a.

Мнение от mIRCata » 04-06-2009 13:53

Основно е в начина на работа с паметта и процесорите.
Superserver кешира дадения брой страници за една база, независимо от конекциите към нея. Classic-a го прави за всяка една конекция. Атон прави 6 конекции към базата. Така ако остане с голямо число страници ще ти трябват огромни количества RAM за повече станции.
Но пък Classic-a може да работи с повече от 1 ядро на процесора, докато super не.

radoslav.radulov
Мнения: 113
Регистриран: 04-04-2007 10:08

Re: Забързване(тунинговане) на firebird-a.

Мнение от radoslav.radulov » 04-06-2009 13:55

Значи съм с правилния Firebird. Или греша?
ПС: Промених стойността на 16777216 и ..... нищо по различно.
По-късно ще пробвам с по-високата сойност.
Не ПРОБВАЙ това в къщи.
Изображение

Потребителски аватар
stoar08
Мнения: 1548
Регистриран: 09-11-2004 08:15
Име: Стоян Арабаджиев
Местоположение: Самоков

Re: Забързване(тунинговане) на firebird-a.

Мнение от stoar08 » 04-06-2009 14:33

radoslav.radulov написа:Значи съм с правилния Firebird. Или греша?
ПС: Промених стойността на 16777216 и ..... нищо по различно.
По-късно ще пробвам с по-високата сойност.
1 Правилно, за повече от 1-2 потребителя classic server + aton е лоша комбинация ;)
2 Няма нужда от по-високи стойности. Ако сървъра прави още 50 неща може да сложиш по-ниска и да стои по-малко резервиран, но неизползван RAM.

С какви размери е базата? Правен ли е backup/restore скоро?
Може да вдигнеш sweep interval. Аз лично съм го сложил според броя транзакции на ден (горе-долу по 1 sweep дневно).
Моля ви, като прочетете тема пишете по едно мнение да не ви търся по icq/телефон после ...

radoslav.radulov
Мнения: 113
Регистриран: 04-04-2007 10:08

Re: Забързване(тунинговане) на firebird-a.

Мнение от radoslav.radulov » 04-06-2009 14:48

Сървъра е единствено за Атон.
Базата е 768mb.
Bakup/restore е правен вчера след рестора смъкна 50мб.
Не ПРОБВАЙ това в къщи.
Изображение

radoslav.radulov
Мнения: 113
Регистриран: 04-04-2007 10:08

Re: Забързване(тунинговане) на firebird-a.

Мнение от radoslav.radulov » 05-06-2009 06:58

stoar08 написа: Може да вдигнеш sweep interval. Аз лично съм го сложил според броя транзакции на ден (горе-долу по 1 sweep дневно).
Къде да го видя този sweep interval ?
През QL Manager for InterBase & Firebird ми дава следната информация за базата:
Всичко ОК ли е ?
Прикачени файлове
general.jpg
general.jpg (34.64 KиБ) Видяна 122874 пъти
users.jpg
users.jpg (37.29 KиБ) Видяна 122898 пъти
Не ПРОБВАЙ това в къщи.
Изображение

Потребителски аватар
stoar08
Мнения: 1548
Регистриран: 09-11-2004 08:15
Име: Стоян Арабаджиев
Местоположение: Самоков

Re: Забързване(тунинговане) на firebird-a.

Мнение от stoar08 » 05-06-2009 19:17

Изглежда правилно ;) Според мен sweep interval можеш спокойно да го сложиш на около 100 000. Вероятно ще ускори растежа на базата (по-рядко ще се 'чисти'), но ако правиш backup/restore на 2-3 седмици веднъж не би трябвало да е проблем.

Друго възможно решение (за под linux) е да изключиш "forced writes" и да промениш "maxunflushed*" параметрите (например на 30 секунди). Под windows е опасно, но за linux би трябвало да да се случи следното :
1 Записваш голямо количество промени
2 те остават в RAM
3 след >= 30 секунди приключва транзакция, която предизвиква физическия запис в/у твърдия диск.

Със сигурност ще даде отражение в/у оперативността (за справки е малко вероятно да помогне).

Естествено, рискуваш да спре ток и да загубиш дадения интервал от време (или даденото количество записи), но е възможно да си струва риска ...
Моля ви, като прочетете тема пишете по едно мнение да не ви търся по icq/телефон после ...

radoslav.radulov
Мнения: 113
Регистриран: 04-04-2007 10:08

Re: Забързване(тунинговане) на firebird-a.

Мнение от radoslav.radulov » 06-06-2009 07:52

Благодаря ти за компетентните отговори.
Ето последните настройки на firebird.conf

Sweep Interval = 10000
Force Writes = off

DefaultDbCachePages = 65536
TempBlockSize = 33554432
TempCacheLimit = 335544320
MaxUnflushedWriteTime = 30
TcpRemoteBufferSize = 16384
LockMemSize = 33554432
LockHashSlots = 3571

Да правя ли някакви промени ?
Не ПРОБВАЙ това в къщи.
Изображение

Потребителски аватар
stoar08
Мнения: 1548
Регистриран: 09-11-2004 08:15
Име: Стоян Арабаджиев
Местоположение: Самоков

Re: Забързване(тунинговане) на firebird-a.

Мнение от stoar08 » 06-06-2009 12:10

radoslav.radulov написа: Sweep Interval = 10000
По-скоро по-високи стойности. С gstat можеш да провериш "next transaction" в началото и края на деня. Спокойно можеш да сложиш число за sweep на 1-2-3 дни (с нарастване на базата ще става все по-тежък=> колкото по-рядко - толкова по-добре).

И ... излишно е да казвам "редовен архив" нали ? ;)
Моля ви, като прочетете тема пишете по едно мнение да не ви търся по icq/телефон после ...

radoslav.radulov
Мнения: 113
Регистриран: 04-04-2007 10:08

Re: Забързване(тунинговане) на firebird-a.

Мнение от radoslav.radulov » 06-06-2009 12:30

5 архива на ден достатъчни ли са ?

Малко полезна информация.
http://www.ib-aid.com/articles/item65
Не ПРОБВАЙ това в къщи.
Изображение

radoslav.radulov
Мнения: 113
Регистриран: 04-04-2007 10:08

Re: Забързване(тунинговане) на firebird-a.

Мнение от radoslav.radulov » 08-06-2009 15:23

Статистика към момента:
Прикачени файлове
stats.jpg
stats.jpg (27.73 KиБ) Видяна 122798 пъти
Последна промяна от radoslav.radulov на 08-06-2009 18:06, променено общо 3 пъти.
Не ПРОБВАЙ това в къщи.
Изображение

radoslav.radulov
Мнения: 113
Регистриран: 04-04-2007 10:08

Re: Забързване(тунинговане) на firebird-a.

Мнение от radoslav.radulov » 08-06-2009 17:11

13 740 реда в лога с :
Database:
I/O error for file "/database/Aton.fdb"
Error while trying to write to file
Invalid argument

На какво се дължи и какво да направя.

ПС: Без от сорта "Изгасили сте сървъра принудително или не както трябва" имам 4,5kw UPS.
Няма как да стане. Не е пипан.
Нова грешка се появи: INET/inet_error: read errno = 104
Последна промяна от radoslav.radulov на 09-06-2009 07:13, променено общо 1 път.
Не ПРОБВАЙ това в къщи.
Изображение

Потребителски аватар
stoar08
Мнения: 1548
Регистриран: 09-11-2004 08:15
Име: Стоян Арабаджиев
Местоположение: Самоков

Re: Забързване(тунинговане) на firebird-a.

Мнение от stoar08 » 08-06-2009 18:08

Опитай да върнеш forced writes ...
Моля ви, като прочетете тема пишете по едно мнение да не ви търся по icq/телефон после ...

Потребителски аватар
mIRCata
Admin
Мнения: 1065
Регистриран: 15-11-2004 15:25
Име: инж. Мирослав Джоров
Местоположение: Тайна майна
Контакти:

Re: Забързване(тунинговане) на firebird-a.

Мнение от mIRCata » 09-06-2009 08:45

radoslav.radulov написа: Нова грешка се появи: INET/inet_error: read errno = 104
Ето какво отговарят от Firebird за това:
errno=104: Connection reset by peer

This is not firebird error. Firebird just reports about lost connections with clients (i.e. when client did not disconnect, but OS detected lost TCP connection). This may happen due to LAN problems or (very often) due to client plugged of computer without normal shutdown.

radoslav.radulov
Мнения: 113
Регистриран: 04-04-2007 10:08

Re: Забързване(тунинговане) на firebird-a.

Мнение от radoslav.radulov » 09-06-2009 11:27

stoar08 написа:Опитай да върнеш forced writes ...
Не става. Пак генерира същата грешка.
По 2-3 грешки в 1 сек.
Не ПРОБВАЙ това в къщи.
Изображение

Потребителски аватар
stoar08
Мнения: 1548
Регистриран: 09-11-2004 08:15
Име: Стоян Арабаджиев
Местоположение: Самоков

Re: Забързване(тунинговане) на firebird-a.

Мнение от stoar08 » 09-06-2009 21:24

Дори след stop/start на сървъра?

Принципно, forced writes е "синхронен режим" на запис, което ще рече, че запис Б е длъжен да изчака гаранция за приключването на запис А (от където идва и ускорението - в асинхонен режим не е необходимо да се изчаква flush на cache). Не съм го ползвал и не знам дали интервала не му идва "къс" . Ако не си усетил подобрение в производителността е по-добре си ги включиш, в противен случай - можеш да увеличиш интервала на 2-3 минути и да наблюдаваш дали се променя положението.

Ако грешката се е появила след "оптимизациите" - опитай да backup/restore след като включиш forced writes и рестартираш firebird процеса ...


Заобиколен начин да го "забързаш", който ще даде по-слаби резултати(не твърдя, че ще се усетят ...), е да създадеш ext2 дял, на който да преместиш временните файлове на firebird. Така, ако случайно му окъси RAM-а по някаква причина, временните файлове ще са на по-бърза файлова система. Не съм сигурен дали GTT също не се пазят в temp директориите ...
Моля ви, като прочетете тема пишете по едно мнение да не ви търся по icq/телефон после ...

radoslav.radulov
Мнения: 113
Регистриран: 04-04-2007 10:08

Re: Забързване(тунинговане) на firebird-a.

Мнение от radoslav.radulov » 10-06-2009 09:23

Вчера правих Backup/Restore сутринта пуснах и Forced Write през IBExpret-a.
Няма промяна според хората които работят активно с Атон.
I/O .... грешката продължава да пълни лога.
Не ПРОБВАЙ това в къщи.
Изображение

Потребителски аватар
stoar08
Мнения: 1548
Регистриран: 09-11-2004 08:15
Име: Стоян Арабаджиев
Местоположение: Самоков

Re: Забързване(тунинговане) на firebird-a.

Мнение от stoar08 » 10-06-2009 14:16

Изключи ли
MaxUnflushedWriteTime = 30
след като върна forced writes? Те са локални за базата, но firebird.conf има по-глобален характер ...
Моля ви, като прочетете тема пишете по едно мнение да не ви търся по icq/телефон после ...

Отговори