位置: 编程技术 - 正文

Tomcat中应用调用Libvirt库进行控制时可能导致线程卡死问题的解决方法(tomcat调用servlet流程)

编辑:rootadmin

推荐整理分享Tomcat中应用调用Libvirt库进行控制时可能导致线程卡死问题的解决方法(tomcat调用servlet流程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:tomcat using,如何用tomcat运行程序,tomcat调用servlet流程,tomcat怎么用,tomcat怎么用,tomcat调用servlet,tomcat调用servlet流程,tomcat调用servlet,内容如对您有帮助,希望把文章链接给更多的朋友!

最近的项目中有用到libvirt的java包进行libvirt的远程命令调用,进行kvm的管理。我们的测试人员一个偶然的机会下测试出来,在控制连接状态的时候,可能存在一个严重的bug,由于界面上的flex应用在每次点击虚拟机节点的时候,会导致对后台的remote service进行大约3-4次的调用,而这些remote service中会利用libvirt的结构进行结果的获取,我们为了提高效率,将libvirt的链接进行了保持,而不是每次都进行重连,以减少性能的损耗。

存在这样的情况,当网络正常的时候,建立起来的connection,一直在内存中驻留,此时如果拔掉网线,这个链接也不会断开,由于内存中这个connection的值也不为空,无法判断链接是否断开,所以在此点击界面的时候,一点调用了libvirt的接口,就会一直卡住界面多点击几次后,tomcat的所有可服务线程就都卡住了,导致整个界面无法使用。

解决方法为:启动一个线程由于实时的检测主机的断开连接状态,当状态不正常的时候,在获取connection的方法中直接抛出异常,阻止后续的逻辑的执行。但是这样只能解决状态问题,不能解决在这个状态获取的间隙中的界面点击问题,查找到资料发现tomcat的线程池模型也许可以帮忙,于是将线程池用上了,测试过后,终于发现可以了。

Tomcat中应用调用Libvirt库进行控制时可能导致线程卡死问题的解决方法(tomcat调用servlet流程)

据说tomcat7可以检测哪个线程被卡死了,但是由于条件显示没有将产品中的tomcat6环境升级为tomcat7,所以这个也就不可用了。

具体修改方法:

复制代码代码如下:<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="" minSpareThreads="4"/&gt取消掉这段的注释,然后可以修改maxThreads和minSpareThreads两个参数为你想要的值,maxThreads比较简单允许的最多线程数通常应该足够了,后面的这个参数呢,表示最小的驻留服务线程数,也就是说这些线程会一直等待服务。</p><p><Connector executor="tomcatThreadPool" port="" protocol="HTTP/1.1" connectionTimeout="" maxTreads="" minSpareThreads="" maxSpareThreads="" URIEncoding="UTF-8" keepAliveTimeout="" redirectPort="" /></p><p>修改Connector节点,增加executor="tomcatThreadPool",maxThreads,minSpareThreads,maxSpareThreads,keepAliveTimeout等参数的配置这样就基本上解决了问题,参数具体含义呢,其中两个和上面提到的意义是一样的,executor表示对上面的那个Executor节点的引用,所有这个配置的线程都会在那个池中。keepAliveTimeout表示每个线程能被卡住的最长时间,也就是能存活的最长时间。

有了上述修改后,我们的tomcat就再也不会被libvirt线程卡住了,一旦卡住,也只是秒的一个线程,除非能同时请求操过个线程,否则tomcat都能正常的提供服务了,只是上述参数没经过调优,性能各方面都没有测试,只是临时解决,具体数值的大小,还是需要按照实际情况,经过多组数据的测试对比后然后确定一个值。

linux常用命令的经典使用技巧 1、sagane@sagane-ThinkPad-Edge:~$mii-tool,网络不通时可用此命令查看物理链接是否正常。2、ssagane@sagane-ThinkPad-Edge:~$sshroot@..1.,以root用户登录ip地址为.

linux下使用fdisk结合partprobe命令不重启系统添加一块新的磁盘分区 主机自带硬盘超过GB,目前只划分使用了3个主分区,不到GB,如下:[root@db2~]#df-hFilesystemSizeUsedAvailUse%Mountedon/dev/sdaG3.7GG%//dev/sdaGG5.2G%/oracletm

linux搭建gfs系统 iscsi+GFS 实现网络存储 虚拟机搭建gfs系统系统环境:CentOSrelease5..6.-.el5gfs节点1:..1.gfs1gfs节点2:..1.gfs2gfs节点3:..1.gfs3iscsi-target存储设备:..1.i

标签: tomcat调用servlet流程

本文链接地址:https://www.jiuchutong.com/biancheng/360583.html 转载请保留说明!

上一篇:linux下通过使用taskset命令来限制进程的CPU (linux使用yum)

下一篇:linux常用命令的经典使用技巧(Linux常用命令的实验总结)

  • 企业所得税亏损弥补的规定
  • 企业所得税退税的会计分录怎么做
  • 品种法,分批法,分步法是什么
  • 国有企业投资方式
  • 加油卡充值可以退吗
  • 民办非企业工会经费
  • 营业执照注销要收费用吗
  • 联营企业属于企业吗
  • 做账时计提费用不含税怎么取整
  • 总分机构账务处理
  • 应收账款减值后可以转回吗
  • 旅行社差额征收怎么做账
  • 增值税减税措施有哪些
  • 单位为员工缴纳社保分录
  • 如何处理走逃失的人
  • 宽带合同要交印花税吗
  • 金税盘年费怎么做账
  • 关联方交易的税怎么算
  • 预提费用年底如何结转
  • 第三方要求
  • 建筑总承包企业资质
  • 如何解决windows7无法开机
  • 报销单据粘贴单样本
  • 企业所得税税前扣除管理办法2018
  • 贷款逾期了利息和罚息可以不还吗
  • 预缴的税款科目怎么做
  • mac桌面的文件夹怎么换到别的地方
  • php的api调用方法
  • 电脑没有声音问题
  • php设计思路
  • 进口增值税公式计算公式
  • 月入2万的10个小生意低成本
  • 财政补贴增值税如何开票
  • 阿布鲁佐的特点
  • 公司账户的钱怎么少了
  • php文件上传用什么请求方法
  • php增删改查mysqli实例
  • opencv焊点缺陷检测
  • 煤炭贸易公司的业务流程
  • 补缴以前年度公积金账务处理
  • 分公司要不要银行开户
  • 建筑企业增值税税率是多少
  • php文件缓存类
  • mysql @参数
  • mysql数据库三种复制类型
  • 当月计算的增值税是负数怎么办
  • 医院累计折旧会计分录
  • sqlserver2019删除
  • 汇算清缴利润调增70万会预警吗
  • 所得税汇算清缴退税会计分录怎么做
  • 银行本票与银行汇票的区别之一是
  • 退回工伤保险的现金流
  • 车间检测费会计分录
  • 销项负数发票给谁
  • 暂估入库有时间限制吗
  • 工会经费购买的固定资产处置
  • 土地价款抵减销项税
  • 票据包括哪些
  • 可供分配利润的计算公式
  • 财务会计属于什么职位类别
  • sql分几类
  • 表空间 数据库
  • 如何禁用windows defender service
  • xp系统禁用网络连接
  • fedora使用
  • linux rpm包位置
  • 调整linux时间
  • windows 8whql
  • win7无法更改工作组
  • ExtJS PropertyGrid中使用Combobox选择值问题
  • Ubuntu 16.04 64位中搭建Node.js开发环境教程
  • nodejs mocha
  • shell脚本检查语法
  • javascript编程技术
  • Python 正则表达式入门(中级篇)
  • android开发主要用什么语言
  • js基础
  • 广西职称申报系统入口220
  • 审批制改为备案制有什么区别
  • 哪个部门负责药品检验
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设