位置: 编程技术 - 正文

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

  • 一般纳税人商品混凝土税率
  • 税务师考试税法一章节
  • 内账需要哪些单据
  • 投标成交服务费
  • 承租承包经营所得
  • 专项附加扣除项目的6项具体规定有哪些
  • 企业申报表有异常期间可以更换财务负责人吗
  • 当月有进项无销项月末怎么处理
  • 公司注销固定资产怎么处理税怎么交
  • 红字发票怎么回事
  • 公司没有业务了 可以办理停业
  • 自然人城建税减半征收
  • 企业所得税跨年度事项
  • 出售商品取得的收入300万元存入银行
  • 不动产经营租赁属于现代服务吗
  • 公允价值变动损益在利润表哪里
  • 银行结算方式包括哪些内容
  • 注册资本的印花税
  • 房地产企业销售老项目税率
  • 上月未申报纳税补申报怎么做不会有罚款吗?
  • 营业外支出所得税汇算要调增吗
  • 外购无形资产的成本包括进口关税吗
  • 简述增值税纳税义务发生时间
  • 开票金额开多了,对公司有影响吗
  • 企业报税提交清算了怎么撤销
  • 转让费入什么会计分录
  • 预提费用冲销需要重新计提吗
  • 延期报税申请怎么操作
  • 企业向个人的借款合同
  • 如何取消网络拦截
  • 土建工程成本核算怎么做
  • 商标申报费用会退回来吗
  • 王者荣耀中钟馗怎么出装
  • 外包社保会计分录
  • macos big sur使用技巧
  • 个人承包建筑工程转让协议
  • php strlen函数
  • 城建税教育费附加什么时候交
  • div css页面布局
  • sar参数设置4个数
  • python3 字典遍历
  • phpcms默认密码
  • php采集器
  • 小规模纳税人增值税税率
  • 收购公司款项的会计处理
  • 企业无票支出该怎么做账
  • 一般纳税人接受捐赠的固定资产,捐赠方提供了有关凭证
  • 出借和出租包装物会计分录是什么
  • 增值税专用发票查询系统官方网站
  • 营业利润净利润利润总额的区别
  • 每月扣除的公积金怎么查
  • 广告公司收到广告收入会计分录
  • 企业职工食堂就餐收费
  • 增值税普票跨月作废怎么操作
  • 固定资产大修理支出摊销年限
  • 非流动资产增加意味什么
  • 工程招标费用由谁支付
  • 不得从销项税额中抵扣的进项税额,不得计提加计抵减额
  • 零余额账户出纳日记账
  • 在windows中打开一个窗口后
  • windows一体机
  • ubuntu20.04安装配置
  • windowsxp的安装方法
  • mac无法开机怎么办
  • xp 桌面图标
  • pcards
  • linux如何查看防火墙配置
  • cocos2d-x教程
  • 飞车超人助手官网
  • 对于不回微信的人,这样做,尽显高情商!
  • unity 3d教程
  • js md5加密方法
  • 批处理延迟变量
  • 怎样用python
  • Node.js+Express+MySql实现用户登录注册功能
  • js跨域的几种方法
  • 为何新能源汽车在东北推广不佳
  • 旅游景区可免交土地使用税
  • 个人所得税房贷能退多少钱
  • 湖北国税发票真伪查询系统
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设