位置: 编程技术 - 正文

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

  • 补缴以前年度企业所得税如何填报汇算清缴表
  • 经济补偿影响下份工作吗
  • 小规模纳税人的账务处理
  • 应交税费转出未交增值税借贷方表示什么
  • 总公司和子公司可以有业务往来吗
  • 金税四期上线后还需要会计吗
  • 本年已交税费怎么算
  • 费用发票能不能直接挂应付账款里
  • 农产品抵扣计算题
  • 税务局未核定的印花税
  • 无偿赠送货物怎么做账
  • 转账支票支付购货款填制什么凭证
  • 固定资产盘亏账务处理例题
  • 应收票据质押会计处理
  • 快递售后是干嘛的
  • 利润表中的上期金额怎么填?
  • 失控发票进项税额转出申报表填写
  • 自收自支事业单位是什么意思
  • 在建工程全部费用化
  • 为什么收到的劳务费税点打星号?
  • 金税盘怎么清盘视频
  • 销售不动产如何开票样本
  • 火车票飞机票计入什么费用
  • 只有进项没有销项怎么报税
  • 挂靠公司代收入税金如何做分录?
  • 小企业财务报表模板免费下载
  • 购买的无形资产入账价值
  • 计提个税怎么做
  • win11 zen2
  • 如何进行网络测试网速测试
  • 金融负债包括哪几项
  • 植物租赁方案
  • 长期股权投资权益法四个明细科目
  • win7为什么那么好用
  • 认缴资本 实收资本
  • 补充医疗税前扣除还是税后扣除
  • 商品购进核算
  • 营改增之前的房子现在出售怎么开票
  • chart.js教程
  • 企业所得税扣除限额标准
  • php中实现文件上传需要用到哪几个函数
  • php curl_exec
  • 收到电子退库如何入账
  • 网站变成灰色什么时候恢复
  • js中...的用法
  • 售后租回交易形成融资租赁,销售时不确认处置损益
  • sqlserver编程
  • 固定资产盘盈为什么计入盈余公积
  • 出售无形资产属于资产处置损益吗
  • 加盟费明细
  • 付给供应商的货款怎么写记账凭证
  • 明细账分类账登记
  • 社保滞纳金可以免除吗
  • 建筑企业成本核算方法
  • 认缴制下实收资本可以一直为零吗
  • 红帽子一个月能挣多少钱
  • 华硕笔记本预装win11改win10
  • mac系统终端命令大全
  • window7优盘不显示
  • 000.exe病毒
  • win7计算机快捷方式不见了
  • win8.1如何关闭windows defender
  • Mac怎么去掉开机密码
  • awk结果输出到文件
  • win7怎样禁用无线网络连接
  • linux命令行在哪
  • cocoscreator lua
  • opengl update
  • #pragma UNROLL 4
  • webpack-loader
  • Android自定义对话框
  • unity update优化
  • jquery遍历表单元素
  • 手机端apk反编译工具_android反编译工具
  • 怎么监控键盘输入
  • javascript文本框获得焦点
  • jQuery AJAX timeout 超时问题详解
  • 云南人社12333app官网
  • 西安车辆购置税缴纳多少
  • 中医药文化进校园活动
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设