SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Firebird, HQbird, InterBase » Hyper-V + Ubuntu + Firebird
Hyper-V + Ubuntu + Firebird [сообщение #6052] Tue, 29 April 2025 14:00 Переход к следующему сообщению
sg729 в настоящее время не в онлайне  sg729
Сообщений: 72
Зарегистрирован: June 2022
Member
Дано:
Виртуалка Hyper-V : 8 Cores, 8 Gb RAM
Ubuntu Server 24.04.2 LTS
LI-V3.0.12.33787 Firebird 3.0 SuperServer
firebird.conf и databases.conf созданы калькулятором
На сервере 22 базы разного размера: максимум - 3 Гб , минимум 100 Мб
Клиенты в разных сетях, связанных между собой по VPN.
Одновременных подключений 2-3 на каждую базу. В сумме на сервер не более 50-60.
Основная рабочая нагрузка с 8:00 до 20:00

Цитата:
root@ubtest:/opt/firebird# cat /proc/$(pgrep firebird)/limits
Limit                     Soft Limit           Hard Limit           Units
Max open files            524288               524288               files
Цитата:
root@ubtest:/opt/firebird# cat /proc/sys/vm/max_map_count
262144
Итог:
Работает...
НО:
почти каждый день как правило в первой половине дня такая картина продолжительностью примерно 20 минут, и разумеется на клиентах тормоза:
/index.php/fa/353/0/
/index.php/fa/354/0/

в остальное время CPU Load averages на уровне 0,2-0,3 и скорость вполне приемлемая
/index.php/fa/351/0/
/index.php/fa/352/0/

Смотрел логи:
firebird.log -
ничего подозрительного кроме "INET/inet_error: read errno = 104" с одного клиента (понятно по какой причине, там канал слабый и глючный)
kernel.log -
2025-04-29T07:44:56.093002+03:00 ubtest kernel: workqueue: ata_sff_pio_task hogged CPU for >10000us 32 times, consider switching to WQ_UNBOUND
syslog -
ничего подозрительного, те же сервисы, что есть в логе с 10:20 до 10:40, стартуют и финишируют и в другое время, когда нагрузка мизерная

Собственно вопрос:
Что бы еще посмотреть, чтобы понять причину сего 20-минутного безобразия?
Возможные гипотезы:
- Мои ошибки в настройке Firebird - если так, плиззз, ткните меня носом в то, что еще раз нужно проверить?
- Сама идея такой связки (Hyper-V + Ubuntu + Firebird) бредовая и не стоит тратить на нее время
- Мало ресурсов? Добавить Cores, RAM?
- Стартует какое-то обновление пакетов или чего-то еще?
Смотрел задачи Cron ничего криминального не заметил.
В настройках Webmin Software Package Updates выбрана опция Just notify for any updates
Перенастроил apt-daily.timer и apt-daily-upgrade.timer на ночное время (по инструкции здесь https://tokmakov.msk.ru/blog/item/743)
И все равно иногда замечаю, что прилетают какие-то обновы и несмотря ни на что самостоятельно обновляются.
Re: Hyper-V + Ubuntu + Firebird [сообщение #6053 является ответом на сообщение #6052] Tue, 29 April 2025 14:19 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время в онлайне  SD
Сообщений: 437
Зарегистрирован: August 2022
Senior Member
Запускай аудит и смотри какими запросами грузят сервер в это время.
Re: Hyper-V + Ubuntu + Firebird [сообщение #6054 является ответом на сообщение #6053] Tue, 29 April 2025 15:37 Переход к предыдущему сообщениюПереход к следующему сообщению
sg729 в настоящее время не в онлайне  sg729
Сообщений: 72
Зарегистрирован: June 2022
Member
это?
https://habr.com/ru/companies/selectel/articles/267833/
Re: Hyper-V + Ubuntu + Firebird [сообщение #6056 является ответом на сообщение #6054] Tue, 29 April 2025 19:54 Переход к предыдущему сообщениюПереход к следующему сообщению
m7m в настоящее время не в онлайне  m7m
Сообщений: 19
Зарегистрирован: June 2022
Географическое положение: Мариуполь,Укр...
Junior Member
sg729 писал(а) Tue, 29 April 2025 15:37
это?
https://habr.com/ru/companies/selectel/articles/267833/
Trace and Audit Services
Re: Hyper-V + Ubuntu + Firebird [сообщение #6057 является ответом на сообщение #6056] Wed, 30 April 2025 09:57 Переход к предыдущему сообщениюПереход к следующему сообщению
sg729 в настоящее время не в онлайне  sg729
Сообщений: 72
Зарегистрирован: June 2022
Member
Спасибо!

Пробую на тестовой базе :

firebird.conf
AuditTraceConfigFile = fbtrace.conf

fbtrace.conf
database = 127.0.0.1:D:\FDB\TEST.FDB
{
enabled = true
log_filename = D:\fbtrace.log
max_log_size = 1
log_statement_finish   true
log_procedure_finish   true
log_trigger_finish     true
print_plan             true
print_perf             true
time_threshold         0
}

C:\Program Files\Firebird\Firebird_3_0>fbsvcmgr service_mgr action_trace_start trc_name "My trace" trc_cfg fbtrace.conf
Trace session ID 2 started

C:\Program Files\Firebird\Firebird_3_0>fbsvcmgr service_mgr action_trace_list
Session ID: 2
 name:  My trace
 user:  USER
 date:  2025-04-30 09:31:38
 flags: active, trace

Делаю запросы из базы TEST.FDB, но файл D:\fbtrace.log не создается...
Службу firebird перезапускал.
Наверное я что-то неправильно делаю?
Re: Hyper-V + Ubuntu + Firebird [сообщение #6058 является ответом на сообщение #6056] Wed, 30 April 2025 10:37 Переход к предыдущему сообщениюПереход к следующему сообщению
basid в настоящее время не в онлайне  basid
Сообщений: 177
Зарегистрирован: June 2022
Географическое положение: Asia/Irkutsk
Senior Member
1. Не надо включать отображение потоков исполнения (threads) top-ом. Вы всё равно не знаете, чем именно занят каждый поток;
2. Было бы неплохо видеть не вот эту вот "типа подробную" фигню, а текстовый вывод второй-третьей итерации top -ibn2 или -ibn3, подрезанный до значимой части. Пример:
top - 09:58:24 up 135 days, 18:53,  2 users,  load average: 10,43, 9,39, 9,29
Tasks: 500 total,   1 running, 499 sleeping,   0 stopped,   0 zombie
%Cpu(s): 20,8 us,  2,6 sy,  0,0 ni, 75,4 id,  0,6 wa,  0,4 hi,  0,2 si,  0,0 st
GiB Mem :    251,3 total,      2,4 free,    179,9 used,     69,0 buff/cache
GiB Swap:     68,0 total,     67,6 free,      0,4 used.     69,1 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
 710587 firebird  20   0  190,9g 177,5g 328,0m S 819,2  70,6   5689:34 firebird
3. Краткую сводку о системе собирает, например, такая последовательность команд:
export LC_MESSAGES=en_US.UTF-8;\
grep PRETTY_NAME /etc/os-release|cut -d\" -f2;\
lscpu|grep -v "^\(F\|Vu\)";\
free -h;\
lsblk
Локаль en-US.UTF-8 должна быть вне зависимости от принятого у вас языка системы.
Вывод полезно отредактировать, убрав ненужное. Пример:
Имя-версия линукса

Architecture:                    x86_64
CPU(s):                          40
Model name:                      Intel(R) Xeon(R) Silver 4114 CPU @ 2.20GHz
Thread(s) per core:              2
Core(s) per socket:              10
Socket(s):                       2
CPU max MHz:                     3000,0000
CPU min MHz:                     800,0000
Virtualization:                  VT-x

              total        used        free      shared  buff/cache   available
Mem:          251Gi       182Gi       2,0Gi       304Mi        67Gi        66Gi
Swap:          67Gi       366Mi        67Gi

NAME              MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sdb                 8:16   0 893,8G  0 disk
├─sdb1              8:17   0     1G  0 part /boot
└─sdb2              8:18   0 892,7G  0 part
  ├─том1          253:0    0    70G  0 lvm  /
  ├─том2          253:1    0     4G  0 lvm  [SWAP]
  └─том3          253:2    0 818,7G  0 lvm  /home
sdc                 8:32   0    14T  0 disk
└─sdc1              8:33   0    14T  0 part /каталог
4. Немало полезной информации даёт интервальная статистика iostat (второй и последующие блоки вывода). Пример (отредактирован, оставлена значимая часть):
iostat -xmh 60 2 sdb sdc
Linux ядро-версия (хост)   30.04.2025   _x86_64_  (40 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          19,5%    0,0%    2,6%    0,4%    0,0%   77,5%
 Device    rB/s  r_await    wB/s  w_await   %util
    sdb    0,9k     0,00  132,8k     0,30    0,1%
    sdc  207,4M     4,88    8,0M     0,22   46,3%
5. Use sql-trace, Luck:
fbtracemgr -se localhost:service_mgr -c конфиг -sta|gzip -1q > вывод.gz &
Заряжаем трассировку всех запросов в интересующий нас интервал времени, останавливаем, анализируем собранное.
6. Вместо скриншотов полезно прикладывать архив, содержащий firebird.conf, databases.conf и, возможно, файл с выводом gstat -h по всем базам. conf-файлы полезно отфильтровать через grep -v ^# conf-файл|grep -v ^$. Вывод gstat тоже можно подрезать.

P.S.
Не всегда, но и не так, чтобы редко, чтение исходных данных может дать ответ на интересующий вопрос.

P.P.S.
Могу необоснованно предположить, что у вашей виртуалки конские ожидания на iowait. Что, скорее всего, означает дохлые диски. Например, крутые серверные, но read-intensive.

[Обновления: Wed, 30 April 2025 10:40]

Известить модератора

Re: Hyper-V + Ubuntu + Firebird [сообщение #6059 является ответом на сообщение #6057] Wed, 30 April 2025 15:14 Переход к предыдущему сообщению
SD в настоящее время в онлайне  SD
Сообщений: 437
Зарегистрирован: August 2022
Senior Member
sg729 писал(а) Wed, 30 April 2025 08:57

Наверное я что-то неправильно делаю?
Да. Задаёшь невозможное имя базы данных в конфиге.
Предыдущая тема: MonitoringData: inconsistent shared memory type/version; found 0/0:0, expected 254/2:6
Следующая тема: Полнотекстовый поиск для Firebird
Переход к форуму:
  


Текущее время: Thu May 01 00:38:56 GMT+3 2025

Общее время, затраченное на создание страницы: 0.00718 секунд