Обойти Socks для локального хоста
Я занимаюсь переносом приложения с одного экземпляра виртуальной машины на другой в облаке Azure. Новый экземпляр теперь размещен за (несколько?) брандмауэрами. Для HTTPS мне пришлось настроить-Dhttps.proxyHost=my.https.proxy
и для необходимого SFTP-соединения мне пришлось настроить-DsocksProxyHost=my.socks5.proxy
в обоих случаях необходимые соединения работают нормально.
Однако теперь я обнаружил, что операторы SQL приложения (JDBC) работают очень-очень медленно. Сервер MSSQL расположен на том же сервере, что и приложение Java, поэтому соединение используетlocalhost
. Я поискал и нашел сообщение (где-то), в котором утверждалось, что вариант-Dhttp.nonProxyHosts="localhost|127.*|[::1]"
может использоваться для обхода прокси-сервера socks, даже если это не указано в документации, см.:https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/net/doc-files/net-properties.html
Я сейчас протестировалnonProxyHosts
и не заметил никаких улучшений производительности.
Я подозреваю, что проблема связана с тем, что сетевой трафик SQL перенаправляется на прокси-сервер Socks и обратно, я не знаю - может быть, проблема с производительностью лежит где-то еще?
Если проблема заключается в носке, как я могу обойти его для соединений с локальным хостом? Если проблема не в носке, то что я могу сделать, чтобы попытаться выяснить, почему JDBC такой медленный?
Спасибо
1 ответ
Не зная, что делают эти брандмауэры, это все равно, что стрелять с закрытыми глазами, может быть, вы можете попробовать отключить брандмауэр для петлевого трафика.