Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как понять какой код тормозит? / 17 сообщений из 17, страница 1 из 1
12.03.2018, 13:59
    #39613443
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой код тормозит?
Сервер сейчас обрабатывает 5 запросов в секунду. Нужно 100.
Нужно разобраться в каком месте код тормозит.

Я так понимаю для этого есть профилировщики.
Подскажите пожалуйста какой профилировщик(в jvisualvm я ничего не нашёл) тут может помочь.

Лицензий у меня ни на что нет. Но торрентами не брезгаю
...
Рейтинг: 0 / 0
12.03.2018, 14:21
    #39613466
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой код тормозит?
На масштабах 5-100 профилировать-то и особого смысла нет. Тут как бы обычным логированием и эвристическим анализом должно быть понятно.
Что вообще приложение делает? Сколько запросов к БД расходуется на каждый запрос юзера? Сколько из них можно прокешировать?

Куксенко и Шипилёв в своём видео по теме рекомендуют начинать с анализа во что именно упирается производительность: память, процессор, IO.

В jvisualvm всё есть для того чтобы пощупать для начала. Продвинутые профайлеры есть смысл смотреть если вам от них действительно будет польза.

Есть два основных способа профилирования и они оба присутствуют в jvisualvm. Только один доступен сразу, а второй надо ставить как плагин.
Первый - инструментирует весь код и логирует время вызова каждого метода. Проблема этого профайлера в том что он сильно исказажает результат, так как само логирование занимает не мало времени.
Второй - сэмплирующий, он делает дамп потоков с некоторой переодичностью. И уже из дапма вычисляет какой метод в какой момент времени работал. Его основная проблема в том что некоторые методы вполне могут проскакивать между сэмплами.
...
Рейтинг: 0 / 0
12.03.2018, 14:27
    #39613477
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой код тормозит?
Все бесплатное - это скорее мучение, а не профилировщики IMHO & AFAIK

Вроде в Eciipse есть бесплатные плагины для профилирования.


пользовался (если не путаю):

https://www.ej-technologies.com/products/jprofiler/overview.html - насколько помню, там был достаточно большой триал период. Потом удалял (сейчас не помню, может даже винду удалял) и ставил заново

https://www.yourkit.com/ - была лицензия, по сравнению с JProfiler мне не очень понравился, возможно просто не разобрался
...
Рейтинг: 0 / 0
12.03.2018, 15:09
    #39613509
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой код тормозит?
BlazkowiczТут как бы обычным логированием
+1
Автор!
Ну начинают же с лога с метками времени.
Если машина не заводится как ищут место поломки?
...
Рейтинг: 0 / 0
12.03.2018, 15:35
    #39613533
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой код тормозит?
Blazkowicz,
Приложение является прокси между другим приложением и некоторым количеством бирж. Общение происходит по fix протоколу.
Используется такая штука: https://www.quickfixj.org/
...
Рейтинг: 0 / 0
12.03.2018, 15:43
    #39613536
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой код тормозит?
redwhite90Blazkowicz,
Приложение является прокси между другим приложением и некоторым количеством бирж. Общение происходит по fix протоколу.
Используется такая штука: https://www.quickfixj.org/
Тогда подозреваю что у вас где-то синхронность лишняя. Нужно загребать запросы от клиентов, запускать их к внешним сервисам в фоне, и возвращать результат по готовности. Профайлер вам ничего полезного не скажет кроме как то что у вас сетевое IO отъедает 99% ресурсов.
Либо вы как-то не так IO используете и вас холостые циклы.
...
Рейтинг: 0 / 0
12.03.2018, 15:58
    #39613561
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой код тормозит?
redwhite90Blazkowicz,
Приложение является прокси между другим приложением и некоторым количеством бирж. Общение происходит по fix протоколу.
Используется такая штука: https://www.quickfixj.org/
Тогда с чего взяли что искать надо именно в коде этого приложения?
...
Рейтинг: 0 / 0
12.03.2018, 16:02
    #39613565
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой код тормозит?
Особенно забавно будет, когда окажется, что биржи, на услугах которых пытаются схалявить, ставят запросы от "особо умных прокси" в очередь. Ну и пользуются каким-то аналогом rate-limit.
...
Рейтинг: 0 / 0
12.03.2018, 16:11
    #39613580
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой код тормозит?
Basil A. SidorovОсобенно забавно будет, когда окажется, что биржи, на услугах которых пытаются схалявить, ставят запросы от "особо умных прокси" в очередь. Ну и пользуются каким-то аналогом rate-limit.

Видел реальную систему. Там так мультиплицировали. Один аккаунт для подписки и много серверов которые подключались к feed'ам которые уже мультиплицировали на биржи

Но там штатный режим работы вроде был наоборот, сообщения ОТ биржи рассылалось множеству заинтересованных подписчиков. После feed'а стоял еще свой cache / БД. Запросы собственно юзеров в 99.9999 % случаев обрабатывались за счет данных в cache. На биржу обычно не уходили. Кроме того, история в cache была боле полной (>15 лет), что то, что по дефолту хранит и отдает биржа.

Кол-во конечных end user'ов по миру - сотни тысяч. Логин и сессия к бирже - один на всех
...
Рейтинг: 0 / 0
12.03.2018, 16:16
    #39613588
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой код тормозит?
Basil A. Sidorov,
RATE_LIMIT случался - потом сделали вентилятор на несколько машин и проблема ушла
...
Рейтинг: 0 / 0
12.03.2018, 16:51
    #39613628
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой код тормозит?
Petro123,

Потому, что мы пишем это приложение)

Биржи очевидно быстрее работают.
...
Рейтинг: 0 / 0
12.03.2018, 17:28
    #39613657
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой код тормозит?
redwhite90Petro123,

Потому, что мы пишем это приложение)

Биржи очевидно быстрее работают.ну. Логи то есть? С привязкой ко времени?
Если вы пишите.
Профилировщик после логов и логи не заменяет.
...
Рейтинг: 0 / 0
12.03.2018, 17:31
    #39613661
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой код тормозит?
Petro123,
Ещё монитор в АппСервере. Даёт стастику например по пулу. Превышен ли макс лимит....
...
Рейтинг: 0 / 0
12.03.2018, 17:33
    #39613664
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой код тормозит?
Petro123...Профилировщик после логов и логи не заменяет...

Одни ситуации - проще через логи искать; другие наоборот - в логах могут быть совершенно не видны, а в профилировщике на первое место вылезти.

IMHO & AFAIK
...
Рейтинг: 0 / 0
12.03.2018, 17:38
    #39613670
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой код тормозит?
Leonid Kudryavtsev,
Именно. Но когда машина не заводится, обычно бензин в баке проверяют.
...
Рейтинг: 0 / 0
12.03.2018, 23:23
    #39613831
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой код тормозит?
redwhite90Сервер сейчас обрабатывает 5 запросов в секунду. Нужно 100.
Нужно разобраться в каком месте код тормозит.

Я так понимаю для этого есть профилировщики.
Подскажите пожалуйста какой профилировщик(в jvisualvm я ничего не нашёл) тут может помочь.

Лицензий у меня ни на что нет. Но торрентами не брезгаю
Тебе не нужны никакие лицензии. Для того чтобы очертить круг твоей проблемы
тебе достаточно стандартного семплирующего профайлера. Напомню что речь идет
о 5 запросах в секунду. Возможно он (профайлер) просто покажет на вершине стека
NetworkSocker.read(..) и ты устремишся к фиксации проблемы. А возможно ты просто
пересмотришь алгоритм. Некоторые проблемы (такие как ORM "N+1") не видны на поверхности
а требуют погружения в код. А сетевой I/O это просто первый звоночек о том что есть
проблема.

По поводу QuckFixJ. Мы ее используем как парсер биржевых месседжей. Она хорошо
оптимизирована и не создает проблем. Проблемы создает наш прикладной код который
с ней работает. И проблему надо решать в нашем коде и оставить либу в покое.
...
Рейтинг: 0 / 0
22.03.2018, 11:14
    #39618751
unregestered
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как понять какой код тормозит?
Самый простой способ это сделать парочку thread дампов. Посмотреть где чо выполняется пока тормозит. Уделить внимание сокетным потокам, тем что runnable и тем что залочены
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как понять какой код тормозит? / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]