Hibernate 使用Google云Sql代理后响应时间增加

Hibernate 使用Google云Sql代理后响应时间增加,hibernate,kubernetes,google-cloud-sql,dropwizard,google-kubernetes-engine,Hibernate,Kubernetes,Google Cloud Sql,Dropwizard,Google Kubernetes Engine,根据官方文档,在Google容器引擎上部署我们的应用程序并通过云Sql代理连接到Google云Sql之后,与通过Google计算引擎实例的ip白名单连接到云Sql相比,api的响应时间至少增加了100毫秒 我编写了一个简单的api,它在mysql上启动一个事务并使用hibernate提交。以下是结果 +-----------------+--------------------+-----------------+-----------------+ | App Deployed on | Nu

根据官方文档,在Google容器引擎上部署我们的应用程序并通过云Sql代理连接到Google云Sql之后,与通过Google计算引擎实例的ip白名单连接到云Sql相比,api的响应时间至少增加了100毫秒

我编写了一个简单的api,它在mysql上启动一个事务并使用hibernate提交。以下是结果

+-----------------+--------------------+-----------------+-----------------+
| App Deployed on | Number of Requests | 99th percentile | Connecting Via  |
+-----------------+--------------------+-----------------+-----------------+
| GKE             |              20140 |           113ms | Cloud Sql Proxy |
| GCE             |              20895 |            13ms | IP whitelisting |
+-----------------+--------------------+-----------------+-----------------+
我的应用程序基于Dropwizard框架,我使用Dropwizard hibernate,下面是连接配置,GCE和GKE的连接配置相同:

database:
  driverClass: com.mysql.jdbc.Driver
  user: db_user
  password: db_user_pass

  url: jdbc:mysql://HOST_IP/db_name?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8
  maxWaitForConnection: 1s      
  validationQuery: "SELECT 1"    
  minSize: 8    
  maxSize: 42
  properties:
      charSet: UTF-8         
      hibernate.hbm2ddl.auto: validate         
  checkConnectionWhileIdle: false
  maxConnectionAge : 10s
  checkConnectionOnBorrow: true
运行上述实验的Api代码

    @GET
    @Path("/response/test")
    @UnitOfWork
    public LeaderBoardResp getLeaderBoardTest(){
        long timeSpent = System.currentTimeMillis() - RequestThreadContext.get().getStartTimeMillis();
        log.info(" Got a request on test api");
        Stopwatch stopWatch = Stopwatch.createStarted();
        try {
            LeaderBoardResp leaderBoardResp = new LeaderBoardResp();
//                    fetchLeaderBoard.fetchLeaderBoard(leaderBoardReq);
            return leaderBoardResp;
        }finally {
            stopWatch.stop();
            log.info("total time in ms :: {} reqfilter time :: {} ",stopWatch.elapsed(TimeUnit.MILLISECONDS),timeSpent);
        }
    }

看起来你已经在@Ahmetalpbarkan讨论过了是的,但仍然没有解决。