美文网首页
那些年踩过的坑

那些年踩过的坑

作者: 黄言黄语 | 来源:发表于2016-07-27 18:17 被阅读139次

    2016-07-27

    1. 使用nginx中转时,如后端服务时间过长,导致前段页面返回http的504 gateway timeout错误。解决办法:nginx在转发时增加timeout。
      Example:
          location /weixinYdt {
             proxy_pass http://weixinYdt_server;
             proxy_connect_timeout 500s;
             proxy_read_timeout 500s;
             proxy_send_timeout 500s;
       }
      
    2. com.ning.http.client.AsyncHttpClient类的使用
    • 可通过AsyncHttpClientConfig设置http client相关参数
    • AsyncHttpClient.BoundRequestBuilder设置http请求相关信息
      Example:
    public static String postJson(String url, Map<String, String> params,String requestBody) throws IOException, ExecutionException, InterruptedException {
            //设置http请求相关参数
            AsyncHttpClientConfig.Builder configBuilder = new AsyncHttpClientConfig.Builder();
            configBuilder.setRequestTimeout(240 * 1000);//设置timeout时间
    
            AsyncHttpClient http = new AsyncHttpClient(configBuilder.build());
            AsyncHttpClient.BoundRequestBuilder builder = http.preparePost(url);
            builder.setBodyEncoding(DEFAULT_CHARSET);
            builder.setBody(requestBody);
            builder.setHeader("Content-Type", MediaType.APPLICATION_JSON.toString());
            builder.setHeader("Accept",MediaType.APPLICATION_JSON.toString());
            builder.setRequestTimeout(240 * 1000);
            if (params != null && !params.isEmpty()) {
                Set<String> keys = params.keySet();
                for (String key : keys) {
                    builder.addQueryParam(key, params.get(key));
                }
            }
    
            Future<Response> f = builder.execute();
    
            String body = f.get().getResponseBody(DEFAULT_CHARSET);
            http.close();
            return body;
        }
    

    2016-07-20

    1. 在出现高并发时,如果数据库是有主键约束,那么需要在发生约束异常时进行处理。

    相关文章

      网友评论

          本文标题:那些年踩过的坑

          本文链接:https://www.haomeiwen.com/subject/dygojttx.html