Рекомендации по системе сбора оперативной статистики - PullRequest
3 голосов
/ 16 декабря 2011

У меня есть веб-сервис, работающий в Linux, который состоит из некоторого PHP-кода, который использует программу C ++ для выполнения тяжелой работы.Код PHP и C ++ выполняется один раз за транзакцию, а затем завершается.Он не является (пока) постоянным (т. Е. Демоном), и да, я знаю, что он был бы более эффективным, если бы он был.

По мере завершения транзакций накапливается различная информация (которую я все вместе называю "статистика "или" статистика ").Эта информация включает в себя информацию профилирования, такую ​​как время выполнения для различных подзадач транзакции, и логическую информацию, такую ​​как характер и результат транзакции.Эти показатели сильно зависят от приложения, поэтому обобщенные инструменты мониторинга и измерений, вероятно, здесь неуместны.

Я хочу начать записывать эту информацию, но не хочу, чтобы сам процесс записи влиял на производительность.В частности, я предполагаю, что я не хочу нести расходы на подключение к базе данных и разрыв каждой транзакции, или блокировать, например, при ожидании доступа для записи в файл.Я хотел бы амортизировать эту стоимость в течение многих транзакций, если это возможно.Меня не волнует, выполняется ли запись статистики в коде C ++ или PHP.

Мне интересно, был бы хороший подход - это что-то, что запускается как демон на самом сервере и получает пакеты статистики (возможно, JSONили protobufs или другой формат упаковки).Каналом доставки может быть сокет, труба или другой эффективный IPC.Эти пакеты будут собираться в пакеты и периодически сохраняться в базе данных или иным образом перемещаться за пределы сервера.Эффективность достигается за счет минимизации обработки каждого пакета и амортизации дорогостоящих операций со многими пакетами.

Мой первый вопрос: является ли подход, который я изложил выше, жизнеспособным и оптимальным?Есть ли другие проекты, которые я должен рассмотреть?

Мой второй вопрос: это похоже на то, что должно уже существовать.Существуют ли какие-либо общие инструменты для систем Linux, которые получают, собирают и пересылают пакеты статистики?

1 Ответ

0 голосов
/ 18 декабря 2011

Сначала немного не по теме; зачем вообще беспокоиться о PHP, если вы делаете всю работу в C ++? Довольно любопытно узнать твои рассуждения.

Одной из популярных баз данных для сбора статистики является RRD , которая хорошо поддерживается в PHP. Он построен для выборки статистических данных.

...