Як контролювати та реєструвати використання процесів пам'яті / процесора протягом часу? [зачинено]


30

Я шукаю спосіб діагностувати такі проблеми, як, наприклад, своп-смерть, де процес запам'ятовування на повітряній кулі заповнює своп і вбиває всю машину (наприклад, апаш).

Я вже використовую кактуси і можу налаштувати нагіо (хоч би і не хотів) або мунін, але наскільки я можу сказати, вони не можуть записувати використання окремих програм - просто загальний статус.

Я знаю, що можу розгорнути сценарій >> у якийсь файл кожні 30-х років, але я хотів би побачити, чи існує вже існуюче дозріле рішення.

Знову ж, в ідеалі це було б:

  • записувати використання пам'яті процесів кожні N секунд
  • записуйте використання процесора за кожні N секунд
  • підтримка діаграм та історії
  • середні показники підтримки - на зразок mysqld за останній день було використано 43% процесора та в середньому пам'ять 400 Мб
  • бути вільним та відкритим кодом

Назви процесів не мають і не повинні бути відомі заздалегідь - ідея полягає в тому, щоб просто дозволити йому контролювати, а потім ознайомитись з головними правопорушниками.

Моя система Linux (OpenSUSE).


Ви хочете відслідковувати будь-який процес, який може мати витік пам’яті (верхні N вивірок пам'яті) або ви хочете відслідковувати визначений набір процесів (наприклад, веб-сервер Apache та процес Tomcat)? Останнє можна виконати за допомогою простих плагінів Nagios або Cacti. Першому важче. Ви повинні уточнити це.
Стефан Ласєвський

Я вже прояснив це у публікації, але ще раз уточнюю: я хочу знати стан системи, коли вона знижується через смертну смерть. Я хочу знати, хто найгірші правопорушники. І btw, це не повинно бути витоком пам'яті - просто приплив трафіку або що-небудь спричиняє високе використання пам'яті. Отже, знову ж таки, не слід конфігурувати попереднє знання бінарних імен.
Артем Русаковський

можливий дублікат - serverfault.com/questions/67234/…
warren

Уоррен, це зовсім інше питання.
Артем Русаковський

8
Закриття такої якісної посади було поганою справою, особливо через 4 роки заднім числом.
Peterh каже, що повернути Моніку

Відповіді:


16

Ви хочете, щоб тільки топ-правопорушники, розгляньте запуск topіз відносно довгим інтервалом (плюс 60 секунд) у пакетному режимі. Вам може знадобитися кілька topзапущених, щоб захопити головних правопорушників на кількох ресурсах. Я налаштував системи для запуску topпротягом декількох циклів, коли ресурс надмірно використовувався.

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

Запускайте muninта вмикайте сповіщення. Це може дати вам можливість зайти і спостерігати за тим, як сервер працює. Можливо, ви зможете виправити проблему, перш ніж вона зменшиться.

Що стосується витоків пам'яті, постійне збільшення використання свопів свідчить про проблему. Я колись спостерігав, як сервер повільно вмирає протягом періоду днів. Проблемною службою була програма, яка моніторить інші процеси на предмет витоку пам'яті. Системний адміністратор постійно наполягав на тому, що збільшення використання свопів не було проблемою, аж до того часу, поки сервер не перестав реагувати.

Ви можете виявити, що cfengineвиявлення аномалії може використовуватися для запуску сценарію для захоплення системного стану, коли справи йдуть не так. Можливо, ви хочете отримати багато інформації, окрім лише тих процесів, що використовують найбільші ресурси. Для раптового припливу використання може знадобитися перелік мережевих підключень (за адресою, а не іменем). Також корисне використання пам'яті.


12

sysstat зроблений майже точно для ваших цілей.


З цього слід почати. Ви не можете знати, з чого почати іспит, поки не дізнаєтесь, де у вас найкращі шанси. Sysstat - це те, що ви шукаєте (також має гарні графіки). Як тільки ви дізнаєтесь більше, використовуйте systemtap.
Аллен

9

Я раніше використовував:

http://freshmeat.net/projects/atop/

"На вершині - це повноекранний монітор продуктивності ASCII, який здатний повідомляти про активність усіх процесів (навіть якщо процеси закінчилися протягом інтервалу), щоденний запис системи та активність процесу для тривалого аналізу, виділяючи перевантажені системні ресурси за допомогою використання кольори тощо. Через регулярні проміжки часу він показує активність на системному рівні, пов’язану з процесором, пам'яттю, свопом, дисками та мережевими шарами, а для кожного активного процесу показує використання процесора, зростання пам'яті, пріоритет, ім'я користувача, стан, і вихідний код. "


Здається, на вершині немає звіту, який би надав мені те, що я хотів. Будь ласка, виправте мене, якщо я помиляюся.
Артем Русаковський

Він піклується про перші два пункти кулі (пам'ять / процесор за процесом). Ви можете використовувати бібліотеку для збору цих статистичних даних, а потім робити свою історію / графік на основі даних.
NinjaCat

4
@ artem-russakovskii - За замовчуванням зверху записує дані у файл кожні десять хвилин. Якщо ваш сервер зазнав аварії в 3:45, ви можете почати зверху atop -r log_filename, натисніть, mщоб перейти до режиму використання пам'яті за процес, а потім натисніть, tщоб рухатися вперед з кроком 10 хвилин до 3:40. Докладніше про основи використання вершини можна прочитати на веб-сайті lwn.net/Articles/387202 та побачити приклад виявлення витоку пам’яті на atoptool.nl/download/case_leakage.pdf
sciurus

6

Ви намагалися збирати?
Це дуже потужно і налаштовується.
Має багато плагінів і може бути інтегрований з nagios.

http://collectd.org/features.shtml


Collectd дуже легкий, не надто складно налаштувати, і дозволить вам бачити зростання пам’яті / заміни з часом. Це, однак, не визначить порушень процесів - але, можливо, ви зможете вчасно помітити і впіймати зростання пам’яті та оглянути ситуацію вручну top.
Маріус Гедмінас

1
Я мушу сказати, що я не пробував цей плагін, але читаючи з посібника з плагіну процесора збирання: "Якщо обрані процеси, збирається наступна інформація. Вся ця інформація агрегується за назвою процесу. Її розмір резидентного сегмента, Використовуваний час користувача та системи, кількість процесів за цим ім'ям, кількість потоків (підсумовується за всіма процесами), кількість основних та незначних помилок сторінки. Грубі числа вводу / виводу (байти, записані та прочитані у зв'язку до системних дзвінків під час процесу)
PiL

Ви можете вибрати процеси або за назвою, або за допомогою регулярного виразу.
ПіЛ

2

Centreon на вершині Nagios, Nagios у поєднанні з NRPE. Потім ви можете написати спеціальні сценарії, щоб повідомляти дані у будь-якому форматі, який ви бажаєте NRPE. Потім Nagios опитує дані з віддалених серверів за допомогою NRPE, а Centreon робить гарний графік і додає багато гнучкості користувачів. Ми використовуємо його на веб-сайті http://beyondhosting.net. У мене є шаблон VZ Container з настройкою centreon + nagios, якщо ви цього хочете.

Графіки centreon будує hostthenpost.org/tyler/2010-07-23_1719.png


Мені б хотілося готового рішення для повідомлення про те, що я згадував, головне, щоб процес займав найбільше пам'яті. Я також не впевнений, що таке VZ.
Артем Русаковський

2

nmon - чудовий інструмент, який робить те, що ви шукаєте. Розроблено для AIX та Linux. Випускає тонну детального результату та легко вміщується у звітах. Якщо ви перейдете в Google, є вікі IBM, яка має купу документації та додаткові утиліти для аналізу даних.


2

Щільність сервера робить саме те, що ви описуєте.

Я використовую його на одному з наших виробничих серверів і дуже радий цьому. Його головною особливістю є можливість перегляду діаграм, натискання на пік і перегляд процесора / споживання пам’яті сервера в цей час, включаючи всі запущені процеси. Вони називають це знімки .

Він постійно вдосконалюється. Однією з останніх особливостей є виявлення аномалії , що дозволяє легко виявити аномалії. Ви також можете встановити різні пороги


1
Ах, я забув згадати ту частину, де я вважаю за краще, щоб вона була безкоштовною та, якщо це можливо, з відкритим кодом. Більше 100 доларів на один сервер - це насправді не те, на що я хочу витратити (і у мене є лише 1 сервер, а не 5). serverdensity.com/pricing
Артем Русаковський


2

Відповіді пропонували, коли я задавав подібне запитання :

Ікапан сказав :

Мунін - це найпростіший спосіб отримати графіки без роботи з мінімальними зусиллями в установці та налаштуваннях. Я також використовую зверху для сукупного використання процесора деяким процесом, але це не те, що ви просили.

Девід Спіллет сказав :

Я використовую colled для запису завантаження системи серед ряду інших параметрів. Він зберігає дані у сховищах RRD, які можна зрозуміти та іншим чином проаналізувати за допомогою багатьох доступних інструментів та сценаріїв. Я використовую модифіковану версію цього сценарію для мого графічного зображення ( зразок виводу ).

У Collectd є плагіни для моніторингу багатьох речей (все, що зазвичай вимагається, і кілька речей на вершині), і створити свій власний не повинен бути складним, якщо вам потрібно щось спеціалізоване, тому це робить дуже гнучким інструментом. Налаштування графіків у rrd.cgi - це дуже ручний процес, хоча і не складний, хоча ви, можливо, можете знайти більш зручний інструмент для роботи з файлами RRD, що підтримуються colled.

Ви також можете перевірити Nagios або OpenNMS .


1

Мунін зробить все, що потрібно, з коробки, не вимагаючи Nagios або будь-якого іншого інструменту. Для OpenSUSE доступні RPM.


Робить це за допомогою плагіна. Якщо так, то який? Я не зміг знайти той, який не потребує попередньо налаштованого списку процесів для моніторингу.
Артем Русаковський

З вашого первісного питання не було зрозуміло, що ви не хочете контролювати заздалегідь налаштований список процесів - ви могли б надати більш детальну інформацію про свої вимоги?
gareth_bowles

Роз'яснення: Назви процесів не є і не повинні бути відомі заздалегідь - ідея полягає в тому, щоб просто дозволити йому контролювати, а потім ознайомитись з основними правопорушниками.
Артем Русаковський

1

Можливо, старий добрий OProfile робить те, що вам потрібно? Це ядро ​​на базі ядра на системному рівні з лише невеликим (на пару відсотків) накладними.

Тоді є чудовий скрипт Perl, PSMon , який дозволяє встановити всі види обмеження процесора / пам'яті. Якщо вони будуть перевищені, psmon зафіксує помилку та / або вб'є процес порушення.

Останній не видав би вам ніяких звітів про профілювання, але якщо він вирішить вбивати той самий процес знову і знову, ви, напевно, знайшли ту гадку, яку ви шукали. :-)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.