gpt4 book ai didi

java - 在 GAE Flex 中通过连接池连接 Cloud SQL 的最佳方式

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:23:34 24 4
gpt4 key购买 nike

我将 Hibernate v5 与 GAE Flexible 环境和 Cloud SQL 结合使用。

一切正常,但是当一个实例被唤醒或者在某个冷时间之后(没有服务请求),它需要很长时间才能连接到数据库(最多 8s),而查询的执行只需要 ms。它还一次又一次地创建 serviceRegistry

任何人都可以建议连接 Cloud SQL 的最佳方法是什么,以避免在获得连接时出现更高的延迟。

PS:我正在使用 cp30 进行连接池。

来自应用引擎的日志:

enter image description here

enter image description hereHibernateUtil 配置:

        props.put("hibernate.hbm2ddl.auto", "validate");
props.put("hibernate.dialect", "org.hibernate.dialect.MySQL5InnoDBDialect");
props.put("hibernate.generate_statistics", "true");
props.put("hibernate.cache.use_query_cache", "true");
props.put("hibernate.transaction.coordinator_class", "org.hibernate.transaction.JDBCTransactionFactory");
props.put("hibernate.cache.region.factory_class", "org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory");
props.put("hibernate.cache.use_second_level_cache", "true");

props.put("connection.provider_class", "org.hibernate.connection.C3P0ConnectionProvider");
props.put("hibernate.c3p0.min_size", "40");
props.put("hibernate.c3p0.max_size", "250");
props.put("hibernate.c3p0.acquire_increment", "1");
props.put("hibernate.c3p0.testConnectionOnCheckin", "true");
props.put("hibernate.c3p0.idle_test_period", "300");
props.put("hibernate.c3p0.maxIdleTimeExcessConnections", "240");
props.put("hibernate.c3p0.preferredTestQuery", "SELECT 1");
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
System.out.println("Hibernate Java Config serviceRegistry created");

SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);

return sessionFactory;

最佳答案

除非您使用 manual scaling ,您的实例经常被终止并重新启动。实例在启动时必须重新加载所有库和配置,因此需要更长的时间是预期的行为。

您的用例有两个简单的选项:

1) 使用 Compute Engine instance ,它允许您加载您的代码、库和配置,它是一个专用的 VM,它将继续为您的请求提供服务,并且不会“缩小”(终止)。这绝对是最安全的方法。

2) 使用manual scaling扩展您的 App Engine Flex 应用程序。这几乎与第一个选项一样有效,但如果实例不健康,它们仍然可以重新启动。在这种情况下,请确保您有 health check设置以在发生某些事情时治愈您的实例。这将使它们尽可能地保持活力和工作。

关于java - 在 GAE Flex 中通过连接池连接 Cloud SQL 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48982293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com