web項目超時方案

1. 場景描述

平臺使用的Greenplum(內核是postgresql8.2)集羣存儲大數據量數據(天天一個表大概3億),由於數據量比較大,因此在使用上有些限制,一是操做限制;二是不限制,可是到必定時間執行不出來結果就要取消掉該查詢,不能一直佔用資源。前端

2. 解決方案

2.1 前端nginx設置

超時時間設置爲240秒,前端nginx設置時間要與後端java設置時間上保持一致。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「。nginx

相關文章
相關標籤/搜索