我在最近迁移到Azure平台的Java应用程序上遇到了问题。该应用程序在Tomcat上运行,并通过Ansible自动部署。应用程序需要通过代理对API进行一些HTTP调用,因此我们在setenv.sh中传递代理参数,这里是代码的一部分:
其中:
tomcat_java_options:
- 'https.proxyHost=xx.xx.xx.xx'
- 'https.proxyPort=8080'
SETENV:
{% if tomcat_java_options is defined %}
JAVA_OPTS="$JAVA_OPTS {{ '-D'~tomcat_java_options|join(' -D') }}"
{% endif %}
问题是:每天早上,应该通过代理的请求都会超时。我们可以看到netstat请求直接进入API而不通过代理。在服务器上,我们可以通过curl(使用代理)加入API。通过重新启动tomcat解决问题,直到第二天早上。
有人有解释吗?非常感谢
只要代理可用且工作(通过它的连接不会失败),Tomcat
将使用它。在无效的代理连接之后,它将不再被使用(当然,直到重启)。你确定在夜间代理没有任何问题吗?