wiki:deployOnLinux

Установка на Debian

Як виявити ресурсомісткий процес firebird

Перевірка споживання ресурсів користувачем або службою допоможе вчасно виявити проблеми продуктивності та оптимізувати навантаження.

✅Крок 1: Перегляд активних процесів

top

Ця команда покаже активні процеси:

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
19033 firebird 20 0 139316 16496 8312 S 100.3 0.1 8:17.12 fb_inet_server

firebird — це служба бази даних, яка працює на порту 3050. PID цього процесу — 19033.

✅Крок 2: Перевірка підключень до служби Firebird (порт 3050)

Виконай команду:

sudo ss -tnp | grep :3050

Результат виведе список усіх користувачів і служб які парцюють з firebird. Результат команди копіюєм, вставляєм у Notapad ++ і за допомогою Ctrl + F шукаєм підключення з pid = 19033:

ESTAB 0 0 127.0.0.1:3050 127.0.0.1:56694 users:(("fb_inet_server",pid=19033,fd=2))

127.0.0.1:56694 — клієнтське підключення до Firebird. Тепер можемо знайти яка служба викоритовує підключення.

✅Крок 3: Знаходження джерела підключення

За допомогою Ctrl + F шукаємо у файлі який ми скопіювали в попередньому кроці, порт 56694:

ESTAB 0 0 127.0.0.1:56694 127.0.0.1:3050 users:(("python3",pid=25721,fd=4))

Підключення ініційоване процесом python3, PID = 25721.

✅Крок 4: Детальна перевірка процесу

Щоб дізнатись більше про процес:

ps -p 25721 -o pid,ppid,user,cmd,%cpu,%mem,start,time

Це виведе інформацію про користувача, команду, яка запустила процес, використання CPU/пам'яті, та час запуску.

Таким чином, ми визначили, хто саме навантажує Firebird, і можемо вжити відповідних дій для оптимізації.

Системні ліміти

В теорії це має допомогти вирішити проблему з відкиданням масових локальних підключень.

Щоб дізнатись обмеження для користувача firebird, робимо наступне:

sudo su - firebird
// soft ліміти:
ulimit -n      // Кількість відкритих файлів (nofile)
ulimit -u      // Кількість процесів (nproc)
// hard ліміти:
ulimit -Hn
ulimit -Hu

Приклад реальних одержаних значень:

ulimit -n (soft nofile): 1024 - Цей ліміт досить низький для Firebird SuperClassic, де кожне підключення створює процес і може відкривати кілька файлів.
ulimit -u (soft nproc): 127951 - Цей ліміт на кількість процесів дуже високий, що добре. Тисячі клієнтів не перевищать його.
ulimit -Hn (hard nofile): 1048576 - Цей hard ліміт дуже високий. Це означає, що ти можеш збільшити soft ліміт аж до цього значення.
ulimit -Hu (hard nproc): 127951 - Hard ліміт на процеси збігається з soft, теж високий.

Зміна лімітів:

mcedit /etc/security/limits.conf

Тут треба встановити нові, порівняно з одержаними значення:

firebird      hard    nofile      65535  # Можна і 1048576, але 65535 зазвичай більш ніж достатньо
firebird      soft    nofile      65535  # Ставимо soft рівним hard, щоб не було проблем
firebird      hard    nproc       65535  # Не обов'язково, але можна поставити на всяк випадок
firebird      soft    nproc       65535  # Теж не обов'язково, nproc у тебе і так високий

Після чого перезавантажуємо систему.

Last modified 4 години ago Востанє змінено 14 трав. 2025 р., 18:22:39