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“。


posted @ 2019-07-13 23:52  软件老王  阅读(825)  评论(0编辑  收藏  举报