Alkinoy
Начинающий
Народ, трям.
Ситуация - есть достаточно большое приложение. Кучка файликов, кучка классов. В зависимости от действий пользователя - подключаются разные классы/файлы. все идет через фронт контроллер (ну почтивсе), но в классах/файлах понатыкано куча экзитов. Используются глобальные переменные. Проект достаточно высоконагружен (десятки тысяч в сутки).
задача - посмотреть на производительность приложения, найти наиболее узкие места и сделать это оперативно.
Как планирую решать.
1-й вариант. Создаю статический класс, потом в разных "подозрительных" местах вызываю его для записи данных измерения. Не нра по причине что я не увижу реального движения запроса пользователя - получу только среднюю производительность отдельных участков (и мороку из-за высокой нагруженности).
2-й вариант. Создать для каждого пользователя объект, который будет считать нагрузку и передавать его по всем вызовам. Не нра по причине - надо переписывать все вызовы... Ну не все - но надо постоянно следить - передался ли этот объект в текущий объект/метод...
3-й вариант. То, на чем остановился. Да, глобальные переменные - зло. Но запихнуть объект, который будет собирать статистику, в глобальные переменные, потом просто добавлять соответствующие вызовы его методов для измерения в разных частях проекта. Не надо думать о доступности объекта - он будет создаваться во фронт-контроллере. Нет необходимости в длительной подготовке - работать метод начинает сразу, постепенно можно расширять его по всему коду.
Собственно, если кто делал что то подобное - выслушаю критику/советы. Спасибо.
Ситуация - есть достаточно большое приложение. Кучка файликов, кучка классов. В зависимости от действий пользователя - подключаются разные классы/файлы. все идет через фронт контроллер (ну почтивсе), но в классах/файлах понатыкано куча экзитов. Используются глобальные переменные. Проект достаточно высоконагружен (десятки тысяч в сутки).
задача - посмотреть на производительность приложения, найти наиболее узкие места и сделать это оперативно.
Как планирую решать.
1-й вариант. Создаю статический класс, потом в разных "подозрительных" местах вызываю его для записи данных измерения. Не нра по причине что я не увижу реального движения запроса пользователя - получу только среднюю производительность отдельных участков (и мороку из-за высокой нагруженности).
2-й вариант. Создать для каждого пользователя объект, который будет считать нагрузку и передавать его по всем вызовам. Не нра по причине - надо переписывать все вызовы... Ну не все - но надо постоянно следить - передался ли этот объект в текущий объект/метод...
3-й вариант. То, на чем остановился. Да, глобальные переменные - зло. Но запихнуть объект, который будет собирать статистику, в глобальные переменные, потом просто добавлять соответствующие вызовы его методов для измерения в разных частях проекта. Не надо думать о доступности объекта - он будет создаваться во фронт-контроллере. Нет необходимости в длительной подготовке - работать метод начинает сразу, постепенно можно расширять его по всему коду.
Собственно, если кто делал что то подобное - выслушаю критику/советы. Спасибо.