web项目超时方案

1. 场景描述

平台使用的Greenplum(内核是postgresql8.2)集群存储大数据量数据(每天一个表大概3亿),因为数据量比较大,所以在使用上有些限制,一是操作限制;二是不限制,但是到一定时间执行不出来结果就要取消掉该查询,不能一直占用资源。

2. 解决方案

2.1 前端nginx设置

超时时间设置为240秒,前端nginx设置时间要与后端java设置时间上保持一致。

   server {
       listen      8080;
       server_name  localhost;
       location / {
       
           root    C:/ngtest1;
           proxy_send_timeout 240;
           proxy_read_timeout 240;
        }
    }

2.2 后端java设置

    @Bean
    public JdbcTemplate jdbcTemplate() {
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSourceGreenPlum());
        jdbcTemplate.setQueryTimeout(240);// 查询超时4分钟
        return jdbcTemplate;
    }

采用jdbc的setQueryTimeout,超时会取消数据库执行(kill掉查询),数据库会报提示”java.sql.SQLException : Query execution was interrupted“。


I'm 软件老王,如果觉得还可以的话,关注下呗!如有不准确或疑问的地方,可通过讨论区、QQ沟通,多谢!

你可能感兴趣的:(web项目超时方案)