`

apache部署集群jkstatus中busy数过高

阅读更多

 

项目背景:采用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 ApplicationServer 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事务管理最容易犯的一种错误》。

 

 

  • 大小: 134.9 KB
  • 大小: 147.7 KB
  • 大小: 67 KB
2
3
分享到:
评论

相关推荐

    apache + tomcat 集群+session复制解决方案

    Apache 和 Tomcat 集群配合 Session 复制是一种常见的高可用性和负载均衡解决方案,尤其适用于大型网站和企业级应用。以下将详细解释这个方案的关键点。 **整体方案策略** 1. **部署逻辑图** 部署逻辑通常包括...

    Apache+Tomcat集群、优化配置

    - 对Apache和Tomcat集群部署感兴趣的开发人员或运维人员; - 希望深入了解Apache与Tomcat集群配置细节的专业人士。 #### 三、网络拓扑图 虽然文档中没有给出具体的网络拓扑图,但根据文档描述,可以想象出一个简单...

    轻松实现Apache,Tomcat集群和负载均衡.pdf

    当面临高并发访问时,单一服务器可能无法承受压力,这时就需要构建集群和实现负载均衡。本文将详细介绍如何在Windows环境下设置Apache和Tomcat的集群以及负载均衡。 首先,你需要准备以下组件: 1. Apache ...

    JBOSS_5.0.0GA的集群搭建

    集群搭建是确保高可用性和可伸缩性的重要手段,它允许多个 JBoss 实例协同工作,共同处理负载,提高系统的整体性能和稳定性。 在搭建 JBoss 5.0.0 GA 集群时,首先需要考虑的是网络架构。Apache HTTP Server(通常...

    apache2.2与tomcat6.x+mod_jk整合

    - **监控工具**:使用mod_status模块或者JKStatus模块,可以实时查看Apache与Tomcat之间的请求状态,监控系统运行情况。 5. **安全性考虑** 在整合过程中,应确保Apache与Tomcat之间的通信安全,可以使用SSL加密...

    Apache_HTTP_Server_与_Tomcat_的三种连接方式介绍.doc

    Apache 和 Tomcat 的结合使用,不仅能够显著提高 Web 服务的性能和稳定性,还能够简化应用的部署和管理。通过选择合适的连接方式,如 JK、Proxy/AJP 或 Reverse Proxy,可以根据具体需求定制最佳的解决方案。对于...

    Apache与Tomcat的几种连接方式介绍

    Apache与Tomcat的连接方式是Web开发中非常重要的一部分。Tomcat本身已经提供了HTTP服务,该服务默认的端口是8080,但我们仍然需要引入Apache或其他专门的HTTP服务器来提高静态文件的处理性能、实现负载均衡和容错、...

    tomcat mod_jk cluster

    为了监控集群的运行状态,可以通过mod_jk的JkLogFile和JkLogLevel配置Apache的日志记录,以及通过JkStatus配置使Apache提供一个状态检查页面,以便查看当前的负载均衡情况和worker状态。 8. **优化与最佳实践** -...

    Apache2.2+tomcat6.0配置[归类].pdf

    Apache2.2与Tomcat6.0的集成配置是一个常见的软件开发任务,特别是在构建高性能、高可用性的Web应用服务器环境中。Apache作为静态内容处理的强力HTTP服务器,与Tomcat(一个流行的Java Servlet容器)结合使用,可以...

    mod_jk的支持httpd2.4的win64版本

    "支持httpd2.4的mod_jk"意味着该模块已经过优化,可以无缝运行在Apache 2.4的64位Windows环境下,确保了在高性能的Windows系统上的稳定性和兼容性。 **Windows上的部署** 在Windows上部署mod_jk涉及以下步骤: 1....

    mod_jk.so 1.2.40 for windows

    Apache HTTP服务器和Tomcat应用服务器的集成是一个常见的部署模式,用于构建高性能、高可用性的Web应用程序。在这种架构中,Apache作为前端服务器处理静态内容,而动态内容则由Tomcat这样的Java应用服务器处理。为了...

    服务器文档

    在这个例子中,"/examples/*"请求被映射到本地Tomcat服务器(localhost),而"/jkstatus/"请求被映射到显示状态信息的worker。 5. **修改httpd.conf**:在Apache的主配置文件httpd.conf中,我们需要加载mod_jk模块...

    linux软件安装.txt

    ### Linux软件安装详解 在Linux环境下进行软件安装与配置是一项重要的技能,对于系统管理员和开发者来...这些步骤可以帮助您在Linux环境下顺利完成这些常用软件的部署工作。每一步都需要仔细检查并根据实际情况调整。

    IIS与Tomcat整合

    - 将JDK安装目录中的`tools.jar`添加到`E:\apache-tomcat-5.5.16\common\lib`目录下。 5. **注册IIS扩展:** - 在注册表中添加相应键值,以启用IIS与JK连接器之间的通信。 - 示例代码: ```plaintext Windows ...

    apachehttpserver与tomcat多域名集成(连接)配置步骤[归类].pdf

    Apache HTTP Server 与 Tomcat 的集成允许在一个统一的环境中运行多个域名,并且通过负载均衡将请求分发到不同的 Tomcat 实例,以提高网站的性能和可扩展性。以下是配置多域名集成的具体步骤: 1. **准备工作** - ...

    IIS5和Tomcat6整合.doc

    - **Tomcat6**:Apache Tomcat 6是一款开源的Java Servlet容器,主要用于部署和运行基于Java的应用程序,尤其是JSP和Servlet。 #### 实现目标 本项目的主要目标是在Windows XP SP3操作系统上配置IIS5以支持JSP应用...

    Tomcat6.x+IIS6+jk2 整合

    软件环境:Window server 2003+ IIS6.0 + Tomcat6.0 + JK2 整了大半天,不过直得整合的好处就不说了 ...在访问过测试页后ISAPI筛选器"jakarta"会显示绿色箭头,红色是配置错误 不知道还有没有漏掉的 ^_^

    Tomcat6.x+IIS6+jk2最新整合

    [HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\2.0] //修改成你的tomcat主目录 "serverRoot"="D:/Tomcat 6.0" //不需要修改跟后面设置的虚拟目录一至 "extensionUri"="/...

    让iis和tomcat共用80端口

    1. **下载并安装Apache的mod_jk模块**:虽然本例中使用的是IIS而非Apache,但mod_jk中的JK(Java Connector)组件可以通过isapi_redirector实现与IIS的兼容。下载mod_jk的isapi_redirector版本,并将其动态链接库...

Global site tag (gtag.js) - Google Analytics