位置: 编程技术 - 正文

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万纳税
  • 本月未记账凭证是什么意思
  • 利息税减少
  • 分公司小规模
  • 严格财务报销程序
  • 销售净水器营业执照范围
  • 未确认融资费用计算公式
  • 卷烟消费税纳税环节有几个
  • 水泥销售成本怎么算
  • 企业所得税按月还是按季度申报
  • 企业常见的股利政策
  • 库存商品对外销售会计分录
  • 收到备付金怎么做分录
  • 企业计提预提费用的会计分录如何编制?
  • 个人所得税0申报逾期
  • 会计增长知识方面
  • 电子发票可以打多少行
  • 案例分析:实物抵债的涉税问题
  • 汇算清缴差旅费扣除标准
  • 基金会可以投资企业吗
  • 未退还的保证金怎么处理
  • 销售商品货款已预收
  • 管理不善存货损失 企业所得税
  • 出口公司代理
  • 事业单位收到投资的账务处理
  • 资金账簿印花税税率
  • 受托代理资产核算
  • 出纳人员赔偿
  • 预付卡发给员工如何入账
  • 怎么解决百度打不开页面
  • 如何不同版本复制粘贴
  • 国库年终总结
  • 委托加工物资的加工费计入什么科目
  • 网络和共享中心在哪里打开
  • sisusbrg.exe - sisusbrg是什么进程 有什么用
  • php数组函数,选班长
  • PHP:pg_select()的用法_PostgreSQL函数
  • 在建工程账务处理包括哪些内容
  • 多对账工作的主要内容
  • vue实现鼠标悬浮 显示全部内容
  • 企业取得的分红款要交税吗
  • 每个月需不需要期末结账
  • mysql查找重复项
  • 以股权抵债的会计分录
  • 注解注入
  • 债券回售手续费是多少
  • 不动产登记违建处理办法
  • 陈列费计入什么科目
  • 现金流量套期与公允价值套期的区别
  • 七天年化收益率2%
  • 小规模纳税人记账报税流程
  • 进项转出再转入
  • 收不回来的应收账款
  • 三证合一后还有纳税人资格证吗
  • 进项税大于销项税需要交增值税吗
  • 小规模纳税人买车可以抵扣哪些税
  • windows精简版精简了哪些
  • win7回收站路径在哪里
  • centos6启动服务的命令
  • 错误代码0x8007007B
  • linux page buffer cache深入理解
  • win10每周更新
  • win7系统鼠标右键没有压缩文件功能
  • windows7 远程连接
  • Android开发简单购物界面
  • shell脚本-lt
  • python简易
  • perl的哈希
  • java程序员准备骑驴找马了,需要怎么准备
  • listview点击获取内容
  • jquery触发点击操作
  • 一道关于医用口罩的数学题初二
  • nodejs使用express
  • nodejs thrift
  • jQuery基于$.ajax设置移动端click超时处理方法
  • 国家税务稽查局举报中心
  • 江苏叉车证查询网上查询
  • 中国税务是做什么的
  • 发票事业单位有税号吗
  • 巩义市公路管理局 邰江华简历
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设