当前位置: 首页 > news >正文

python node 网站开发近日网站收录查询

python node 网站开发,近日网站收录查询,上海网站制作服务,镇江建设局网站原理 open-in-view 是 Spring Boot ⾃动加载 Spring Data JPA 提供的⼀个配置,全称为 spring.jpa.open-in-viewtrue,它只有 true 和 false 两个值,默认是 true。 这个配置为true时,会导致Web MVC请求处理的一开始&…
原理       

 open-in-view 是 Spring Boot ⾃动加载 Spring Data JPA 提供的⼀个配置,全称为 spring.jpa.open-in-view=true,它只有 true 和 false 两个值,默认是 true。
        这个配置为true时,会导致Web MVC请求处理的一开始,就从连接池取一个数据库连接放到本地线程变量;Web MVC请求处理结束后,才会归还给连接池
open-in-view 机制是为了解决在 mvc 的 controller 中使用了 hibernate 的 lazy load 的属性时 no session 抛出的LazyInitializationException 异常

        这个处理逻辑位于OpenEntityManagerInViewInterceptor.preHandle,在Sentinel处理代码SentinelResourceAspectExt之前,所以Sentinel限流无法阻止JPA取数据库连接。
 

隐患一


        如果业务代码中,有耗时操作,就导致数据库连接还回连接池变慢,进而引起雪崩效应,导致tomcat处理线程大量增加,而处理性能却无法提高,所有Web MVC请求都无法响应,应用提供的服务中断。

@ResponseBody
@RequestMapping(value = "/xxx/send", method = RequestMethod.POST)
@SentinelResource(value = "xxxdcc#send", entryType = EntryType.IN)
public SendXXXResp sendSms(@RequestBody SendXXXVo sendXXXVo) {//同步调用第三方系统,耗时超过一定时间,如3sSendXXXResp sendXXXResp = new SendXXXResp();return sendXXXResp;
}

        如果数据库连接池最大连接数为200,同步调用第三方系统耗时3s。那么这个接口的QPS达到70时,会导致应用雪崩,整个应用无法提供服务。

隐患二

        当jpa与mybatis等框架混合使用时,存在死锁的问题。一个Web MVC请求处理时,JPA框架会从连接池中取一个数据库连接放入本地线程变量,业务处理代码使用mybatis访问数据库,也需要取一个数据库连接,在极端情况下,取不到就会等待,导致JPA取的连接也没有还给连接池,导致死锁。
也会导致tomcat处理线程大量增加,而处理性能却无法提高,所有Web MVC请求都无法响应,应用提供的服务中断。
示例代码:

@ResponseBody
@RequestMapping(value = "/xxx/send", method = RequestMethod.POST)
@SentinelResource(value = "xxx#send", entryType = EntryType.IN)
public SendXXXResp sendSms(@RequestBody SendSmsVo sendSmsVo) {//使用mybatis框架访问数据库CallingConfig callingConfig=callingConfigMapper.selectById(sendXXXVo.getXXXAccount());SendXXResp sendXXXResp = new SendXXXResp();return sendXXXResp;
}

        如果数据库连接池最大连接数为200,这个接口QPS达到200。即使方法体中没有耗时操作,也会导致应用雪崩,整个应用无法提供服务。

修改建议
  1. 将spring.jpa.open-in-view配置为false,注意不要设置成了“spring.shardingsphere.jpa.open-in-view”
  2. 不要使用JPA 的关联查询,如不要使用@OneToMany等关联查询的注解。以免open-in-view为false时,出现LazyInitializationException 异常。

annel_account_config账号表与calling_config主叫号码表是一对多的关系;

JPA中设置的关联查询:

@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "channelAccountId")
private List<CallingConfigInfo> callingConfigList = new ArrayList<>();

在Controller中进行了查询使用:

ChannelAccountConfigInfo channelAccountConfigInfo= channelAccountConfigRepository.findOne(1L);
List<CallingConfigInfo> callingConfigList = ObjectUtil.getOptional(()->channelAccountConfigInfo.getCallingConfigList()).orElse(new ArrayList<>());
for(CallingConfigInfo callingConfigInfo:callingConfigList){log.info("Calling:"+callingConfigInfo.getCalling());
}

http://www.tj-hxxt.cn/news/58923.html

相关文章:

  • 网页设计比较优秀的网站线上推广策划方案
  • 家居网网页设计代码温州seo网站推广
  • 网站着陆页有多少个交换友情链接平台
  • 做网站自己买服务器吗产品推广建议
  • 做网站都需要什么b2b电子商务平台
  • 真做视频网站张家界网站seo
  • 贵州网站制作设计公司哪家好天津seo
  • 如何撰写网站建设方案百度竞价托管外包
  • 怎样做二维码链接到网站上站内seo优化
  • 镇江网站营销推广深圳网络推广网络
  • 金融网站模板素材五种新型营销方式
  • 重庆房产网seo推广需要多少钱
  • 做网站公司广州怎样建立自己的网站平台
  • 中国移动官方网站官网今日的头条新闻
  • 做网站考虑的方面直接下载app
  • 网站建设时间、人力及成本估算百度app官方下载
  • 网站建设山东聚搜网络b汕头网站建设方案维护
  • 做片视频在线观看网站广告联盟官网入口
  • 找外包做网站要多久nba最新交易消息
  • 政府网站建设工作室好用的磁力搜索引擎
  • 黄石网站开发目前较好的crm系统
  • 引用网站的内容如何做注释百度快照查询
  • 网站建设方案评标原则seo薪资水平
  • 称为关键词是网站seo的核心工作
  • 有个网站专做品牌 而且价格便宜seo优化官网
  • 贵州网站建设联系电话搜索引擎的工作原理有哪些
  • 做服装店网站的素材上海网络推广培训学校
  • 东阳网站优化百度一下免费下载安装
  • 网站城市切换如何做西安seo全网营销
  • 青岛网站设计价格上海网站营销seo方案