项目背景:采用SSH架构,tomcat部署,apache负责集群,terracotta负责session共享。

在我们维护某项目的初期,当访问我们的web服务的用户数过多时,会出现apache的JK Status Manager中Busy数过高,当达到某一峰值,我这里遇到的Busy数是300左右时,对应tomcat将宕掉。

我们采用了一种我称为反向定位Bug的方法。此方法不像以往的只能定位到是哪个action发生错误,而无法更加具体而详尽的定位到是哪个action中的哪一段代码有问题,也无法还原现场,即工程师无法将这个Bug重现。

反向定位Bug方法可以有效的查找出是哪个用户在哪个时间段做了哪些操作造成系统问题,并能有效的定位到出现问题的代码段。

下面做以介绍:

1、找出JK Status Manager中Busy数过高的那几个Tomcat

2、查看对应Tomcat Manager Application中Server Status的信息

得到下述Server Status的信息:

在此处,可以看到是哪个IP提出了哪种Request请求导致Busy数过高。此图片只是用来举个例子,并不是实际中出现Busy过高时的图片。

3、在我们的数据库中用户登录记录表中,会有IP和用户账户的对应关系,就可以查出是具有哪种种权限的哪个用户在何时使用了这个应用。此应用即上述Request下对应的应用。

4、对Bug重现,进行分析。

最终,我们发现我们系统Busy数过高,并不是因为服务器性能不足造成的,而是以下两个代码问题造成的:

1、系统有两条复杂的SQL语句,查询结果可以达到上亿条,使得执行到此查询时,需要耗费30分钟左右的时间。

2、在action中未规范使用Spring事务处理语句。

此两个问题,导致oracle出现严重的锁等待现象,通常会出现数以千计的锁。解除oracle锁,可以查看我的《批量解决oracle锁等待的方法》一文。

出现问题1的原因是某些程序员在select中使用了过多无用的表,并将这些无用的表连接起来,导致拼凑出大量无用的查询数据。删除这些无用表即可。若不行,您可以考虑经此处的业务逻辑尽量简化一下。

action中未规范使用Spring事务处理语句,可参考我写的《Spring事务管理最容易犯的一种错误》。

apache部署集群jkstatus中busy数过高相关推荐

  1. Apache + Tomcat集群配置详解(1)

    Apache + Tomcat集群配置详解(1) 一.软件准备 Apache 2.2 : http://httpd.apache.org/download.cgi,下载msi安装程序,选择no ssl ...

  2. apache+tomcat集群环境搭建

    apache+tomcat集群环境搭建 1. 什么是集群         简单理解就是:将项目同时部署在多台服务器上(tomcat)运行,通过一个web服务器(Apache/nginx)进行请求分发和 ...

  3. 【博士论文】集群系统中的网络流调度

    来源:专知 本文为论文,建议阅读5分钟当前,集群系统的部署和使用非常广泛. 来自清华大学张彤的博士论文,入选2021年度"CCF优秀博士学位论文奖"初评名单! https://ww ...

  4. 在集群环境中安装sql2005的sp2

    打开从微软网站下载好的补丁,就看下面图片的安培过程吧: 注意:此补丁要在当前活动的节点上运行才有效,在其它非活动节点安装无效. 注意:上页面列出此集群环境中所有的sql服务器,在这里选择所有的,就是给 ...

  5. swarm部署集群_WildFly Swarm –将Java EE应用程序部署为独立的Jar

    swarm部署集群 WildFly Swarm提供了一个简单的解决方案,用于将Java EE应用程序部署为独立的Jar文件. 这使得部署应用程序非常容易,尤其是REST或Web服务. Swarm在这方 ...

  6. 在集群环境中使用 EhCache 缓存系统|RMI 集群模式

    RMI 是 Java 的一种远程方法调用技术,是一种点对点的基于 Java 对象的通讯方式.EhCache 从 1.2 版本开始就支持 RMI 方式的缓存集群.在集群环境中 EhCache 所有缓存对 ...

  7. powerha_在IBM PowerHA集群环境中实现存储数据的服务器端缓存

    本文介绍了如何将IBMPowerHA®集群配置为使用定制的应用程序脚本为应用程序提供高可用性(HA)时,如何在IBM®AIX®操作系统上启用服务器端存储数据缓存 . AIX提供AIX 7.1 TL4 ...

  8. SRS部署集群服务 Edge 模式[SRS V4.0]

    SRS 部署集群服务 Edge 模式 前言 Edge原理 下载并编译SRS 准备三台服务器,一台也可以,但是播放多了会有卡顿问题 配置SRS 测试SRS集群服务 前言 SRS是一个简单高效的实时视频服 ...

  9. Redis 集群规范(中文稿)(MOVED错误码及ASK错误码

    引言? 这个文档是正在开发中的 Redis 集群功能的规范(specification)文档,文档分为两个部分: 第一部分介绍目前已经在 unstable 分支中实现了的那些功能. 第二部分介绍目前仍 ...

最新文章

  1. 当有人看不起你时,要懂得反省自己
  2. Auto ML自动调参
  3. pfile和spfile的区别
  4. 线性递推式+求第N项,用矩阵快速幂 如何构造初始矩阵
  5. 实操《深入浅出React和Redux》第二期—Flux
  6. 设计模式1—创建型模式
  7. mysql table keys_MySQL Explain详解
  8. Python中列表的del,remove和pop函数之间的区别
  9. C#中实现QQ截图的功能及相关问题
  10. Thinkphp3.2 分页带中文参数报错
  11. MySQL令人咋舌的隐式转换
  12. 直接请求接口_「软件测试教程」基于postman进行接口测试实战
  13. cordova+vue项目整合
  14. php静态类 使用场景,【php】PHP静态方法和非静态方法的使用场景
  15. [Python] np.ones_like(ndarray)和np.zeros_like(ndarray)
  16. POJ-1251-Jungle Roads
  17. Tp5.0 PHPMailer邮件发送
  18. 数据结构图之三(最短路径--迪杰斯特拉算法)
  19. AutoJs学习-TTS抢语音红包
  20. 用python画箱线图_python绘制箱线图

热门文章

  1. CSS图片定比例缩放
  2. 巴渝工匠杯html5,巴渝工匠杯重庆市第十二届高职院校.PDF
  3. uevent 驱动_Linux 内核/sys 文件系统之uevent | 学步园
  4. 利用Pyproj进行地理投影坐标系转换
  5. 计算机毕业设计Java翻转课堂微视频管理系统(源码+系统+mysql数据库+lW文档)
  6. 软件测试面试题汇总,【全网最全整理】
  7. 防火墙策略管理-firewalld
  8. 关于将tomcat卸载干净
  9. GitHub的下载、安装与使用
  10. redis保存下来,自己慢慢享用