|
|
|
Как понять какой код тормозит?
|
|||
|---|---|---|---|
|
#18+
Сервер сейчас обрабатывает 5 запросов в секунду. Нужно 100. Нужно разобраться в каком месте код тормозит. Я так понимаю для этого есть профилировщики. Подскажите пожалуйста какой профилировщик(в jvisualvm я ничего не нашёл) тут может помочь. Лицензий у меня ни на что нет. Но торрентами не брезгаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 13:59 |
|
||
|
Как понять какой код тормозит?
|
|||
|---|---|---|---|
|
#18+
На масштабах 5-100 профилировать-то и особого смысла нет. Тут как бы обычным логированием и эвристическим анализом должно быть понятно. Что вообще приложение делает? Сколько запросов к БД расходуется на каждый запрос юзера? Сколько из них можно прокешировать? Куксенко и Шипилёв в своём видео по теме рекомендуют начинать с анализа во что именно упирается производительность: память, процессор, IO. В jvisualvm всё есть для того чтобы пощупать для начала. Продвинутые профайлеры есть смысл смотреть если вам от них действительно будет польза. Есть два основных способа профилирования и они оба присутствуют в jvisualvm. Только один доступен сразу, а второй надо ставить как плагин. Первый - инструментирует весь код и логирует время вызова каждого метода. Проблема этого профайлера в том что он сильно исказажает результат, так как само логирование занимает не мало времени. Второй - сэмплирующий, он делает дамп потоков с некоторой переодичностью. И уже из дапма вычисляет какой метод в какой момент времени работал. Его основная проблема в том что некоторые методы вполне могут проскакивать между сэмплами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 14:21 |
|
||
|
Как понять какой код тормозит?
|
|||
|---|---|---|---|
|
#18+
Все бесплатное - это скорее мучение, а не профилировщики IMHO & AFAIK Вроде в Eciipse есть бесплатные плагины для профилирования. пользовался (если не путаю): https://www.ej-technologies.com/products/jprofiler/overview.html - насколько помню, там был достаточно большой триал период. Потом удалял (сейчас не помню, может даже винду удалял) и ставил заново https://www.yourkit.com/ - была лицензия, по сравнению с JProfiler мне не очень понравился, возможно просто не разобрался ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 14:27 |
|
||
|
Как понять какой код тормозит?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczТут как бы обычным логированием +1 Автор! Ну начинают же с лога с метками времени. Если машина не заводится как ищут место поломки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 15:09 |
|
||
|
Как понять какой код тормозит?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Приложение является прокси между другим приложением и некоторым количеством бирж. Общение происходит по fix протоколу. Используется такая штука: https://www.quickfixj.org/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 15:35 |
|
||
|
Как понять какой код тормозит?
|
|||
|---|---|---|---|
|
#18+
redwhite90Blazkowicz, Приложение является прокси между другим приложением и некоторым количеством бирж. Общение происходит по fix протоколу. Используется такая штука: https://www.quickfixj.org/ Тогда подозреваю что у вас где-то синхронность лишняя. Нужно загребать запросы от клиентов, запускать их к внешним сервисам в фоне, и возвращать результат по готовности. Профайлер вам ничего полезного не скажет кроме как то что у вас сетевое IO отъедает 99% ресурсов. Либо вы как-то не так IO используете и вас холостые циклы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 15:43 |
|
||
|
Как понять какой код тормозит?
|
|||
|---|---|---|---|
|
#18+
redwhite90Blazkowicz, Приложение является прокси между другим приложением и некоторым количеством бирж. Общение происходит по fix протоколу. Используется такая штука: https://www.quickfixj.org/ Тогда с чего взяли что искать надо именно в коде этого приложения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 15:58 |
|
||
|
Как понять какой код тормозит?
|
|||
|---|---|---|---|
|
#18+
Особенно забавно будет, когда окажется, что биржи, на услугах которых пытаются схалявить, ставят запросы от "особо умных прокси" в очередь. Ну и пользуются каким-то аналогом rate-limit. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 16:02 |
|
||
|
Как понять какой код тормозит?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovОсобенно забавно будет, когда окажется, что биржи, на услугах которых пытаются схалявить, ставят запросы от "особо умных прокси" в очередь. Ну и пользуются каким-то аналогом rate-limit. Видел реальную систему. Там так мультиплицировали. Один аккаунт для подписки и много серверов которые подключались к feed'ам которые уже мультиплицировали на биржи Но там штатный режим работы вроде был наоборот, сообщения ОТ биржи рассылалось множеству заинтересованных подписчиков. После feed'а стоял еще свой cache / БД. Запросы собственно юзеров в 99.9999 % случаев обрабатывались за счет данных в cache. На биржу обычно не уходили. Кроме того, история в cache была боле полной (>15 лет), что то, что по дефолту хранит и отдает биржа. Кол-во конечных end user'ов по миру - сотни тысяч. Логин и сессия к бирже - один на всех ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 16:11 |
|
||
|
Как понять какой код тормозит?
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, RATE_LIMIT случался - потом сделали вентилятор на несколько машин и проблема ушла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 16:16 |
|
||
|
Как понять какой код тормозит?
|
|||
|---|---|---|---|
|
#18+
Petro123, Потому, что мы пишем это приложение) Биржи очевидно быстрее работают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 16:51 |
|
||
|
Как понять какой код тормозит?
|
|||
|---|---|---|---|
|
#18+
redwhite90Petro123, Потому, что мы пишем это приложение) Биржи очевидно быстрее работают.ну. Логи то есть? С привязкой ко времени? Если вы пишите. Профилировщик после логов и логи не заменяет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 17:28 |
|
||
|
Как понять какой код тормозит?
|
|||
|---|---|---|---|
|
#18+
Petro123, Ещё монитор в АппСервере. Даёт стастику например по пулу. Превышен ли макс лимит.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 17:31 |
|
||
|
Как понять какой код тормозит?
|
|||
|---|---|---|---|
|
#18+
Petro123...Профилировщик после логов и логи не заменяет... Одни ситуации - проще через логи искать; другие наоборот - в логах могут быть совершенно не видны, а в профилировщике на первое место вылезти. IMHO & AFAIK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 17:33 |
|
||
|
Как понять какой код тормозит?
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, Именно. Но когда машина не заводится, обычно бензин в баке проверяют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 17:38 |
|
||
|
Как понять какой код тормозит?
|
|||
|---|---|---|---|
|
#18+
redwhite90Сервер сейчас обрабатывает 5 запросов в секунду. Нужно 100. Нужно разобраться в каком месте код тормозит. Я так понимаю для этого есть профилировщики. Подскажите пожалуйста какой профилировщик(в jvisualvm я ничего не нашёл) тут может помочь. Лицензий у меня ни на что нет. Но торрентами не брезгаю Тебе не нужны никакие лицензии. Для того чтобы очертить круг твоей проблемы тебе достаточно стандартного семплирующего профайлера. Напомню что речь идет о 5 запросах в секунду. Возможно он (профайлер) просто покажет на вершине стека NetworkSocker.read(..) и ты устремишся к фиксации проблемы. А возможно ты просто пересмотришь алгоритм. Некоторые проблемы (такие как ORM "N+1") не видны на поверхности а требуют погружения в код. А сетевой I/O это просто первый звоночек о том что есть проблема. По поводу QuckFixJ. Мы ее используем как парсер биржевых месседжей. Она хорошо оптимизирована и не создает проблем. Проблемы создает наш прикладной код который с ней работает. И проблему надо решать в нашем коде и оставить либу в покое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 23:23 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39613670&tid=2122168]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
72ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 403ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...