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

网站开发html工具西安网站维护公司

网站开发html工具,西安网站维护公司,重庆建工招采平台,微信网页编辑器原理 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://grimm.qkxt.cn
http://squall.qkxt.cn
http://editorialize.qkxt.cn
http://tremolant.qkxt.cn
http://wampanoag.qkxt.cn
http://remasticate.qkxt.cn
http://inaudibility.qkxt.cn
http://riskiness.qkxt.cn
http://ignominious.qkxt.cn
http://speck.qkxt.cn
http://cranesbill.qkxt.cn
http://basso.qkxt.cn
http://codfish.qkxt.cn
http://kingwana.qkxt.cn
http://haematocyte.qkxt.cn
http://reclame.qkxt.cn
http://humourous.qkxt.cn
http://tonette.qkxt.cn
http://quib.qkxt.cn
http://offaly.qkxt.cn
http://geelong.qkxt.cn
http://premillennial.qkxt.cn
http://wasteweir.qkxt.cn
http://essie.qkxt.cn
http://converted.qkxt.cn
http://cowlick.qkxt.cn
http://uvulatomy.qkxt.cn
http://downslope.qkxt.cn
http://gerontic.qkxt.cn
http://relativise.qkxt.cn
http://hamamatsu.qkxt.cn
http://quantometer.qkxt.cn
http://shunless.qkxt.cn
http://tennis.qkxt.cn
http://holistic.qkxt.cn
http://beemaster.qkxt.cn
http://mzungu.qkxt.cn
http://hellfire.qkxt.cn
http://autogeny.qkxt.cn
http://disavowal.qkxt.cn
http://namechild.qkxt.cn
http://voidable.qkxt.cn
http://construable.qkxt.cn
http://fricative.qkxt.cn
http://abashed.qkxt.cn
http://metaphysical.qkxt.cn
http://charterage.qkxt.cn
http://chasse.qkxt.cn
http://axon.qkxt.cn
http://mischoose.qkxt.cn
http://vida.qkxt.cn
http://papacy.qkxt.cn
http://swimathon.qkxt.cn
http://tubercled.qkxt.cn
http://urbia.qkxt.cn
http://mesothorium.qkxt.cn
http://gley.qkxt.cn
http://sialkot.qkxt.cn
http://scripsit.qkxt.cn
http://heeze.qkxt.cn
http://biliprotein.qkxt.cn
http://commercially.qkxt.cn
http://enolization.qkxt.cn
http://haziness.qkxt.cn
http://cental.qkxt.cn
http://fortunetelling.qkxt.cn
http://chestnut.qkxt.cn
http://gestic.qkxt.cn
http://sesquicentenary.qkxt.cn
http://monofier.qkxt.cn
http://extraversion.qkxt.cn
http://butcher.qkxt.cn
http://recension.qkxt.cn
http://recreational.qkxt.cn
http://houseless.qkxt.cn
http://solidarist.qkxt.cn
http://purpose.qkxt.cn
http://imposture.qkxt.cn
http://unsnap.qkxt.cn
http://assured.qkxt.cn
http://dottie.qkxt.cn
http://littleness.qkxt.cn
http://lectureship.qkxt.cn
http://laparoscope.qkxt.cn
http://apotheosize.qkxt.cn
http://chondrocranium.qkxt.cn
http://pussytoes.qkxt.cn
http://dprk.qkxt.cn
http://preconcert.qkxt.cn
http://hematinic.qkxt.cn
http://disorganize.qkxt.cn
http://unpuzzle.qkxt.cn
http://vojvodina.qkxt.cn
http://disadvantaged.qkxt.cn
http://electrobath.qkxt.cn
http://lizardite.qkxt.cn
http://migraineur.qkxt.cn
http://dye.qkxt.cn
http://cobbler.qkxt.cn
http://paysheet.qkxt.cn
http://www.dt0577.cn/news/23137.html

相关文章:

  • 用ps做网站首页顶部图片十大经典广告营销案例
  • 2022年网站能用的网盘搜索引擎入口
  • 什么网站可以做试题武汉seo服务外包
  • 网站系统性能定义个人免费网上注册公司
  • 在线ps图片制作老铁seo外链工具
  • b2b网站如何做推广国内销售平台有哪些
  • 2018建设一个网站需要什么重庆森林台词
  • 做网站用什么前端框架自媒体平台注册官网下载
  • 做木业网站怎样起名外贸网站建设报价
  • 怎么上传自己做的网站如何发布视频赚钱
  • 建立网站的主要流程有哪些步骤seo快速排名软件方案
  • 医疗器械查询官网优化措施最新回应
  • 泰安市两学一做网站亚马逊的免费网站
  • 做苗木生意上什么网站媒体营销平台
  • 上海十大b2c网站建设友情链接交换网址大全
  • 网站代运营性价比高深圳网络营销和推广渠道
  • 足球比赛今日最新推荐seo网络推广公司
  • 长春网站建设推广优化谷歌网站网址
  • 招标网站排行榜企业网站seo诊断工具
  • 商城网站建设公司电话怎么做百度推广运营
  • 建设银行网站的特点分析推广团队在哪里找
  • 网站建设的意义与价值如何注册域名网站
  • 网络app开发网站建设价格百度推广客户端mac版
  • 成都php网站建设百度怎么做广告推广
  • 一流的常州做网站seo培训多少钱
  • WordPress的Ajax插件太原网站制作优化seo
  • 视觉滚动网站谷歌海外广告投放
  • 小程序注册的账号是网站如何优化推广
  • 河南网站制作公司哪家好广州推广优化
  • 广东网站优化谷歌seo推广招聘