【问题标题】:What's the recommended way to set networkaddress.cache.ttl in Elastic Beanstalk?在 Elastic Beanstalk 中设置 networkaddress.cache.ttl 的推荐方法是什么?
【发布时间】:2015-06-17 05:51:52
【问题描述】:

我需要为在 Tomcat 8 中运行的 Amazon Elastic Beanstalk 应用程序设置 Java 的 DNS 缓存 TTL (networkaddress.cache.ttl)。因为 EB 可以随时启动和停止服务器实例,所以我不能简单地编辑 Tomcat 配置文件和服务器,并期望更改持续存在。

我尝试设置 networkaddress.cache.ttl 和 sun.net.inetaddr.ttl 环境变量,但没有效果。亚马逊说调用java.security.Security.setProperty("networkaddress.cache.ttl" , "60");“如果你在Tomcat中运行你的应用程序将不起作用”(http://aws.amazon.com/articles/4035)。设置 TTL 的好方法是什么?

【问题讨论】:

    标签: java tomcat amazon-elastic-beanstalk tomcat8


    【解决方案1】:

    问题是我做错了。设置 sun.net.inetaddr.ttl 环境变量有效。您可以在 Elastic Beakstalk 配置文件中执行此操作:

    option_settings:
        - namespace: aws:elasticbeanstalk:application:environment
          option_name: sun.net.inetaddr.ttl
          value: 60
    

    60 秒是值recommended by Amazon

    另一个对我来说似乎更好的选择是创建和使用 java.security 文件:

    option_settings:
        - namespace: aws:elasticbeanstalk:application:environment
          option_name: java.security.properties
          value: /etc/myapp/java.security
    container_commands:
        00create_config_dir:
            command: 'mkdir -p /etc/myapp'
            ignoreErrors: true
        01create_java_security_file:
            command: 'echo "networkaddress.cache.ttl=60" > /etc/myapp/java.security'
            ignoreErrors: true
    

    【讨论】:

      【解决方案2】:

      如果您使用的是 spring 框架,以下是我在应用程序初始化时设置 networkaddress.cache.ttl 的操作。

      1. 如下定义一个新的Java类。

        package com.example.util;
        public class SecurityManager {
          public SecurityManager() {
            java.security.Security.setProperty("networkaddress.cache.ttl", "60");
          }
        }
        
      2. 要求spring框架在spring容器创建时将上述类的对象实例化为单例。

        <beans xmlns="http://www.springframework.org/schema/beans"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
        
          <bean id="securityManager" 
            class="com.example.util.SecurityManager" scope="singleton" />
        
        </beans>
        

      【讨论】:

      • 您知道在 Elastic BeanStalk 上运行的 Java 8 的默认值是多少吗?我似乎找不到它@monish001
      • 我创建了一个 @Configuration 类来设置这些属性,但从日志看来,HikariPool-1 - Start 已完成。在设置属性之前开始。那会是个问题吗?这算作与数据库的交互吗?
      猜你喜欢
      • 2013-06-20
      • 2021-08-15
      • 2023-03-06
      • 1970-01-01
      • 2018-02-17
      • 2010-10-19
      • 2011-07-29
      • 2017-01-25
      • 2019-05-11
      相关资源
      最近更新 更多