Установка на 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 у тебе і так високий
Після чого перезавантажуємо систему.