JProfiler - как профилировать удаленное приложение при наличии брандмауэра?

Мне удалось установить удаленный зонд JProfiler, и я вижу, что он работает в «catalina.out» (Tomcat). Единственная проблема заключается в том, что все порты на удаленной машине защищены брандмауэром (кроме 80 и 8080), и независимо от того, какой порт я выбрал, графический интерфейс JProfiler не может подключиться к удаленному зонду.

Я пытался использовать туннелирование PuTTY, но я не совсем уверен, как настроить правила туннелирования. Более того, кажется, что в JProfiler нет «сетевых настроек», где я могу указать прокси-сервер SOCKS.

Как я могу решить эту проблему, не беспокоясь о правилах брандмауэра? Удаленная машина не находится под моим непосредственным контролем, и для открытия дополнительных портов требуется много времени и документов.


person Ivan Davidov    schedule 19.08.2013    source источник


Ответы (2)


Я нашел решение, которое включает в себя несколько шагов.

Шаг 1. Создайте правильное туннелирование SOCKS:

Настройки прокси-сервера PuTTY для JProfiler при профилировании удаленного приложения с помощью брандмауэра.

В конце не забудьте нажать кнопку «Добавить».

Шаг 2. Измените сценарий запуска JProfiler и добавьте параметры прокси-сервера SOCKS:

java -Xmx512m -classpath "%LOCALCLASSPATH%" -DsocksProxyHost=localhost -DsocksProxyPort=8849 com.jprofiler.frontend.FrontendApplication

Приведенный выше фрагмент кода следует поместить в файл jprofiler.bat, который находится здесь:

\Program Files\jprofiler8\bin\windows

Шаг 3. Откройте удаленный сеанс JProfiler и используйте исходный удаленный хост и исходный удаленный порт. Другими словами, запустите обычный сеанс удаленного профилирования без каких-либо отклонений от исходного процесса. Туннелирование PuTTY автоматически решит проблему с брандмауэром.

person Ivan Davidov    schedule 19.08.2013

Я делаю то же самое с SSH (используя Cygwin в Windows):

ssh -L 8849:localhost:8849 <username>@<target-hostname>

Поскольку это непривилегированный порт, вы можете войти в систему как обычный пользователь.

Затем я могу подключить графический интерфейс JProfiler к порту 8849 на локальном компьютере с Windows.

Кстати, я также использую jpenable на цели, чтобы открыть агент профилирования без изменения файлов запуска/конфигурации сервера приложений:

jpenable --pid=<app-server-pid> --noinput --gui --port=8849
person wbdarby    schedule 29.09.2015