位置: 编程技术 - 正文

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常用命令的实验总结)

  • 职工薪酬纳税调减的情况
  • 小规模纳税人纳税申报时间
  • 增值税加计抵减政策10%和15%
  • 什么是税额和计税金额
  • t3怎么查资产负债表
  • 缴纳以前年度所得税怎么做分录
  • 四种股利分配政策类型
  • 减免税款借贷方表示
  • 主营业务收入体现在资产负债表哪里
  • 可以先抵扣下个月的进项票吗
  • 冲减往年管理费用
  • 银行承兑个人可以接受吗
  • 交强险发票备注的车船税怎么报销
  • 赠品视同销售会计分录要如何编制?
  • 以前年度留抵用完 不能抵欠税
  • 没有建筑资质能办安全生产许可证吗
  • 起征点是什么意思举例子说明
  • 母公司向分公司收取管理费
  • 企业的不征税收入用于支出所形成的资产,其计算的折旧
  • 个人承包公司的经营所得怎么算
  • 其他应付款注销时怎么冲平
  • 客户分批付款怎么说
  • win7文件打开方式选错了如何恢复
  • 高新技术企业改革
  • php中提交表单数据
  • win10 dev版本
  • 怎么获取免费的腾讯vip
  • 404 not found意思详细介绍
  • code ide
  • 长期借款还款
  • php流程引擎
  • 详解中国女足出线形势
  • 应收账款账务处理及案例分析
  • tftp传输命令
  • 公司注销清算的会计分录
  • mongodb简单使用
  • 累计折旧怎么做账
  • 个人所得税是可以全部退回吗
  • 减免增值税优惠政策
  • 企业的资产必须符合哪些条件
  • 公司什么项目
  • 弃置费用的摊余成本
  • 稳岗补贴操作
  • 基本户收到款不入账
  • 劳务分包预缴税款计算公式
  • 股东借款如何认定为出资
  • 折旧完的固定资产出售
  • 不动产租赁按简易计税吗
  • 补交增值税税款怎么做账
  • 做好年底冲刺
  • 记帐凭证的填制方法
  • 购买本公司产品未付款需要签名字吗
  • sql语句中单引号怎么打
  • mysql误删记录查询
  • win8系统打开苹果系统文件
  • 2021win10激活
  • ipad文件使用技巧
  • ubuntu2004分区教程
  • 使用linux常用命令
  • linux搭建l2tp服务器
  • win8怎么进去安全模式
  • 电脑xp系统如何
  • ubuntu怎样调出命令行
  • windows有两个
  • 如何延长mac待机时间
  • win8.1系统安装
  • 红石id
  • Windows命令行删除文件夹
  • python 读中文文件
  • unity best fit
  • excel实现多选
  • 拖曳对象时用的命令
  • node.js入门教程
  • python爬虫教程推荐
  • 金条如何销售
  • 医院开具的电子票据是发票吗
  • 公司完税证明去哪里打印
  • 合伙企业的税收较高
  • 信托公司抵押房能买吗
  • 工会经费支出审批制度
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设