Проанализируйте «работающий» дамп потока при высокой нагрузке на стороне сервера. - PullRequest
2 голосов
/ 21 марта 2011

Дамп потока из приложения на основе Java легко получить, но трудно проанализировать!

Есть кое-что интересное, что мы можем увидеть из дампа потока.

Предположим, мы находимся в сильно загруженном Java-приложении. И я часто беру 10 или 15 файлов дампа потока в пиковое время (при высоких нагрузках) для создания широких данных. Итак, во-первых, нет сомнений в том, что нам нужно настроить коды, статус которых Заблокирован и Монитор . Я не могу копать больше с остальными Runnable темы.

Итак, если «метод» появляется из дампа потока много раз, можем ли мы сказать, что он медленнее или быстрее, чем другой при высокой нагрузке на стороне сервера? Конечно, мы можем использовать больше инструментов профилирования, чтобы проверить это, но дамп потока может дать нам ту же полезную информацию, особенно в производственной среде.

Спасибо за объявление!

Vance

Ответы [ 2 ]

2 голосов
/ 21 марта 2011

Я бы внимательно посмотрел на стек вызовов потока (ов) в каждом дампе, независимо от состояния потока, и спросил бы: «Что именно он делает или ждет в тот момент времени и почему?»

Вы не просто смотрите на функции в стеке вызовов, вы смотрите на строки кода, где эти функции вызываются. Это говорит вам о местной причине для звонка. Если вы объедините локальные причины для вызовов в стеке, это даст вам полную причину («цепочка почему») для того, что поток делал в то время.

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

1 голос
/ 21 марта 2011

Я бы сказал, что если метод очень часто появляется в дампе потока, вам нужно либо

  1. оптимизировать этот метод, так как он вызывается много раз, либо
  2. checkбудет ли этот метод вызываться слишком часто

Если вы видите, что выполнение потока тратит много времени в конкретном методе, то может также быть некоторая ошибка (как у нас было с использованием специального регулярного выражения, которое страдало отошибка в движке регулярных выражений).Так что вам нужно это расследовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...