位置: 编程技术 - 正文

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

  • 增值税发票服务名称可以更改吗
  • 企业所得税视同销售的会计处理是?
  • 奖金个人所得税税率
  • 固定资产未转固属于什么风险
  • 差额征收企业指什么企业
  • 个体户一季度不超过30
  • 发票上的不含税单价怎么算的
  • 什么企业可以开增值税专用发票
  • 发票上的销货方是什么意思
  • 股权转让1元转让
  • 土地以租代卖,违法吗
  • 房产税从租计征的税率是12%还是4%
  • 以旧换新销售货物的增值税处理
  • 外贸企业出口采购流程
  • 一般纳税人的账户是基本账户吗
  • 已认证已抵扣的发票对方要寄回吗
  • 增值税专用发票有效期是多长时间
  • 金融保险业的行业规范及标准
  • 水资源税计入会计科目
  • 成本费用怎么做分录
  • 物流公司增项
  • 研发费用的会计和税法的不同
  • 自己生产的水泥用于建造厂房
  • App Store可以退款吗
  • 开机默认开启数字键
  • tersafe.dll
  • win10一直显示修复
  • 记账凭证的摘要怎么填写
  • php面向对象的三大特征
  • 查补以前年度企业所得税的申报处理
  • 收到供应商现金回扣
  • php数组函数输出《咏雪》里有多少"片"字
  • macos10.15.7补充更新
  • yolov3与yolov2
  • 外国政府贷款利息是否征收增值税
  • laravel5.4生成验证码的实例讲解
  • 小额贷款企业收利息吗
  • mysql框架有哪些
  • 企业没有实缴
  • 分配股利账务处理
  • 提供有形动产租赁服务的增值税税率为
  • 根据银行回单做流水账单
  • 对方公司开收据盖什么章
  • 加油票没有纳税怎么办
  • 城市维护建设税是什么意思
  • 捐赠合同模板
  • 收据入帐
  • 销售二手固定资产
  • sql server 2016 sp3
  • sql server 2008使用说明
  • 使用SQL查询学生的姓名
  • 个人所得税10月份申报期
  • mysql查询重复的全部删除
  • 员工报销货款会计分录怎么写
  • 无偿调入资产如何做账
  • 中级会计职称与中级会计师的区别
  • 财务费用包含了利息费用吗
  • 提取备用金记账凭证号的入账范围
  • 预收账款所得税汇算清缴需要调吗
  • 投标费用计入哪个科目
  • 从事股权投资业务的企业业务招待费
  • 总分类账与明细分类账的关系
  • 征收率和税率的区别举例
  • 商品流通企业进货费用
  • xp快捷桌面图标
  • ubuntu鼠标不能移动
  • centos 软件源
  • win10新版磁贴
  • 关于植物的现代诗
  • android 快速开发
  • javascript entries
  • ios shell脚本
  • shell脚本 su
  • 地税税号查询系统
  • 供暖企业所涉及的行业
  • 广东省国家税务局网上办税大厅
  • 税务局风险评估是什么意思
  • 财产租赁包括哪些财产
  • 没盖发票专用章可以补盖吗
  • 车辆保险代收车船税会计分录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设