位置: 编程技术 - 正文

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

  • 可抵扣暂时性差异是指在确定未来收回资产
  • 2023年小规模物业公司物业费税率
  • 个体户无票收入对公司有影响吗
  • 金税盘交钱
  • 综合所得申报如何手工填写信息
  • 增值税发票已抵扣能否认定合同关系
  • 资产负债表试算平衡表是什么
  • 自然灾害造成的房屋损失怎么处理
  • 基本医疗保险基金与生育保险基金
  • 地下车库的成本核算
  • 土地不动产登记证办理流程
  • 研发部门属于哪个会计科目
  • 详解出口退税的涵义
  • 零余额账户期末怎么结转?
  • 上年多计提附加税调整了,今年怎么调整
  • 企业所得税汇算清缴
  • 发票少开退回多付的货款怎么入账?
  • 金税盘减免政策依据
  • 上市公司企业股东转让股份交什么税费
  • 生育津贴还扣税吗
  • 货款已经收到
  • 退货应该怎么记账
  • 单位开具发票
  • 多付货款退回的法律依据
  • mac怎么快速显示桌面
  • php-mbstring
  • 企业支付银行的贷款利息可以税前扣除吗为什么
  • 销售费用里面的支付的安装人工费汇算清缴时计入哪里
  • 大金中央空调面板图解
  • 取得增值税发票丢了怎么是好
  • 如何写php守护进程数据
  • 电子缴款凭证能代替完税证明吗
  • 前端页面加载缓慢怎么办
  • 梅尔加足球俱乐部
  • 申报系统异常
  • 作废发票需要拿回执单吗
  • 公司破产清算应先还银行还是股东
  • yolov5s
  • js怎么注册
  • 深度学习参数初始化(二)Kaiming初始化 含代码
  • 大前端2021
  • ussd命令
  • handsome主题破解
  • 个体户发票没有开户行和账号行吗
  • 跨年进项税额未做账
  • 收到汇算清缴后怎么处理
  • 结转清理损失会计分录
  • odbc api
  • 固定资产折旧如何影响利润
  • 哪些凭证是有效凭证
  • 免税 企业
  • 应付利润科目
  • 银行业应收票据分析
  • 把excel表格里的文字复制到word
  • mysql 5.7.16 zip包安装配置方法图文教程
  • mysql查询表语句
  • centos ulimit
  • lsass exe
  • window10的连接功能
  • cpio压缩
  • win10取消uac
  • win10mobile下载官网
  • opengles版本过低怎么办
  • set命令应用
  • excel password recovery5.0注册码
  • jquery选择器的基本语法
  • android开发工程师岗位说明
  • JavaScript电子时钟倒计时第二款
  • 详解jQuery中的empty、remove和detach
  • android键盘aosp
  • node express 路由
  • jqueryfor循环
  • centos python2.7升级到3.7
  • 江苏昆山电费查询电话
  • 税务代办需要什么资料
  • 科技公司小规模纳税人
  • 重庆电子税务局怎么开电子发票
  • 20 百望九赋税控盘管理员默认指令多少?
  • 进口非应税消费品的组成计税价格为
  • 中国采购网地胶
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设