返回顶部
首页 > 资讯 > 后端开发 > Python >高并发下restTemplate的错误分析方式
  • 413
分享到

高并发下restTemplate的错误分析方式

2024-04-02 19:04:59 413人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录高并发下restTemplate的错误分析1.问题现象和分析2.问题解决使用restTemplate出现的异常高并发下restTemplate的错误分析 1. 问题现象和分析

并发下restTemplate的错误分析

1. 问题现象和分析

org.apache.Http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection

此问题很明显是连接等待超时,而且是从连接池中获取的连接。

那么就有一个很诧异的问题,这里哪来的连接池呢?然后我去跟踪restTemplate的源码发现,其底层是通过apache 的httpClient实现了连接池。那么问题就很明显了。就是在并发量高的时候,可能会出现连接池不够用。

2. 问题解决

  • 既然分析出来是连接池不够了,那么我们在构建restTemplate的时候配置其底层的httpClient连接池大小,以便提高高并发的时候RestTemplate的性能。
  • 可以通过配置总体最大连接池(maxConnTotal)和单个路由连接最大数(maxConnPerRoute),默认是(20,2)

maxConnTotal是整个连接池的大小,根据自己的业务需求进行设置

maxConnPerRoute是单个路由连接的最大数,可以根据自己的业务需求进行设置


public RestTemplate restTemplate() {
    HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory(HttpClientBuilder.create()
      .setMaxConnTotal(20)
      .setMaxConnPerRoute(20)
      .build());
    httpRequestFactory.setConnectionRequestTimeout(10000);
    httpRequestFactory.setConnectTimeout(10000);
    httpRequestFactory.setReadTimeout(10000);
    return new RestTemplate(httpRequestFactory);
   }

这样就可以解决高并发下restTemplate连接池不够的问题。提高其性能,使得调用restTemplate的程序性能------>

使用restTemplate出现的异常

1.org.springframework.WEB.client.UnknownContentTypeException: Could not extract response: no suitable HttpMessageConverter found for response type [class zycf.cloud.bean.SafetyResponseType] and content type [text/html]

除了所有的答案之外,如果碰巧收到了text/html,而你期望别的东西(即 application/JSON)

则可能表明服务器端发生了错误(比如404)并且返回了错误页面而不是你的数据。

用postMan测试,果然是的,这个接口期望收到json数据,却收到了HTML页面

2.org.springframework.web.client.RestClientException: No HttpMessageConverter for java.util.HashMap and content type "multipart/fORM-data"

HashMap参数改为LinkedMultiValueMap


 MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
        params.add("clientId",ZHEJIANG_CLIENT_ID );
        params.add("nonce", uuid);                      //随机数
        params.add("timestamp", dateString);             //时间戳
        params.add("signature", signature);           //签名
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.MULTIPART_FORM_DATA);
        HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(params, headers);
        
        RestTemplate restTemplate = new RestTemplate();
        SafetyResponseType safetyResponseType = restTemplate.postForObject(SAFETY_CERTIFICATE_URL, requestEntity, SafetyResponseType.class );

采用这种方法反序列化的时候,如果json字符串中有相同的key,存的时候值会以数组的方式保存,

比如我们在做表单提交的时候,表单数据中可能存在键相同值不同的情况,可以用这种方法存值。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: 高并发下restTemplate的错误分析方式

本文链接: https://lsjlt.com/news/155860.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 高并发下restTemplate的错误分析方式
    目录高并发下restTemplate的错误分析1.问题现象和分析2.问题解决使用restTemplate出现的异常高并发下restTemplate的错误分析 1. 问题现象和分析 ...
    99+
    2024-04-02
  • go高并发时append方法偶现错误解决分析
    目录背景排查问题解决问题背景 在实现图片转码的需求时,需要支持最大 500 个图片下载后转换格式; 如果是一个一个下载后转码,耗时太长,需要使用 goroutine 实现 500 个...
    99+
    2024-04-02
  • java实用型-高并发下RestTemplate的正确使用说明
    目录前言一、RestTemplate是什么?二、如何使用1.创建一个bean2.使用步骤三、高并发下的RestTemplate使用1.设置预热功能2.合理设置maxtotal数量总结...
    99+
    2024-04-02
  • java高并发中并发级别的示例分析
    这篇文章给大家分享的是有关java高并发中并发级别的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。阻塞一个线程是阻塞的,那么在其他线程释放资源之前,当前线程无法继续执行。当我们使用synchronized...
    99+
    2023-06-25
  • 分析MySQL并发下的问题及解决方法
    1、背景 对于数据库系统来说在多用户并发条件下提高并发性的同时又要保证数据的一致性一直是数据库系统追求的目标,既要满足大量并发访问的需求又必须保证在此条件下数据的安全,为了满足这一目标大多数数据库通过锁和事...
    99+
    2024-04-02
  • 怎么理解高并发下的数据库分布式事务
    这篇文章主要介绍“怎么理解高并发下的数据库分布式事务”,在日常操作中,相信很多人在怎么理解高并发下的数据库分布式事务问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么理解高并发下的数据库分布式事务”的疑惑有所...
    99+
    2023-06-02
  • 从架构思维角度分析高并发下幂等性解决方案
    目录1 背景2 幂等性概念3 幂等性问题的常见解决方案 3.1 查询操作和删除操作3.2 使用唯一索引 或者唯一组合索引3.3 token机制3.4 悲观锁3.5 乐观锁...
    99+
    2024-04-02
  • PHP 分布式系统下如何实现高并发缓存?
    随着互联网的发展,高并发的问题变得越来越普遍。而缓存作为一种提高系统性能的解决方案,更是被广泛应用。在分布式系统中,如何实现高并发缓存,也成为了一个热门话题。本文将介绍在 PHP 分布式系统中如何实现高并发缓存,并附上相应的演示代码。 一...
    99+
    2023-09-22
    分布式 并发 缓存
  • 如何分析web器解决403禁止错误的方式
    这篇文章将为大家详细讲解有关如何分析web器解决403禁止错误的方式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。403禁止的错误是一个HTTP状态代码,这意味着出于某种原因,绝对禁止访问您...
    99+
    2023-06-03
  • Redis瞬时高并发秒杀的示例分析
    这篇文章给大家分享的是有关Redis瞬时高并发秒杀的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.Redis丰富的数据结构(Data Structures)字符串(S...
    99+
    2024-04-02
  • 软件系统中高并发的示例分析
    这篇文章将为大家详细讲解有关软件系统中高并发的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。概述当前,数字化在给企业带来业务创新,推动企业高速发展的同时,也给企业的IT软件系统带来了严峻的挑战。面...
    99+
    2023-06-15
  • 服务器的高并发架构实例分析
    本篇内容主要讲解“服务器的高并发架构实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“服务器的高并发架构实例分析”吧!服务器架构业务从发展的初期到逐渐成熟,服务器架构也是从相对单一到集群,再...
    99+
    2023-06-05
  • redis处理高并发的方式有哪些
    Redis处理高并发的方式有以下几种: 垂直扩展:增加Redis服务器的内存和CPU资源,提高单个Redis实例的性能。 水...
    99+
    2024-04-09
    redis
  • Linq开放式并发控制的示例分析
    小编给大家分享一下Linq开放式并发控制的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!首先让大家了解下Linq开放式并发控制,然后全面介绍Linq开放式...
    99+
    2023-06-17
  • SingleFlight模式的Go并发编程实例分析
    这篇文章主要介绍了SingleFlight模式的Go并发编程实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SingleFlight模式的Go并发编程实例分析文章都会有所收获,下面我们一起来看看吧。在go...
    99+
    2023-06-30
  • java web在高并发和分布式下实现订单号生成唯一的解决方案
    方案一:如果没有并发,订单号只在一个线程内产生,那么由于程序是顺序执行的,不同订单的生成时间戳正常不同,因此用时间戳+随机数(或自增数)就可以区分各个订单。如果存在并发,且订单号是由一个进程中的多个线程产生的,那么只要把线程ID添加到序列号...
    99+
    2023-05-30
    java web 高并发
  • 通过golang进行Select Channels Go并发式编程的错误处理方法
    在Go并发式编程中,可以使用select语句来同时监听多个通道的数据流动,并根据不同的情况进行处理。当一个或多个通道有数据可读时,s...
    99+
    2023-10-08
    Golang
  • JavaScript 错误处理中的日志记录最佳实践:追踪并分析错误
    ...
    99+
    2024-04-02
  • 分布式 PHP 缓存方案:如何实现高效的并发访问?
    随着互联网技术的飞速发展,Web 应用程序的并发访问量越来越大,如何实现高效的并发访问成为了一个急需解决的问题。在这个问题中,缓存的作用变得越来越重要。在 PHP 开发中,使用缓存可以大大提高应用程序的性能和响应速度。本文将介绍一种分布式...
    99+
    2023-09-22
    分布式 并发 缓存
  • PHP 分布式缓存方案:如何提高系统的并发性能?
    随着互联网的快速发展,很多网站和应用程序面临的最大问题是高并发访问。为了解决这个问题,开发人员通常会使用缓存技术。PHP 分布式缓存是一种非常有效的缓存技术,可以帮助我们提高系统的并发性能。 什么是 PHP 分布式缓存? PHP 分布式缓...
    99+
    2023-09-22
    分布式 并发 缓存
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作