公司网站的apache和tomcat都是使用的默认配置,但最近访问量增长得比较快,因此公司网站出了点问题,解决过程如下:
一、发现演示站有时候会无响应,浏览器不报错,但一直等待。这时用ps aux|grep http|wc -l命令查看apache进程数,发现为150,这是apache默认的最大连接数,于是修改httpd.conf,将MaxKeepAliveRequests设为1000,使用命令apache2ctl -k restart重启apache使配置生效。
二、重启后演示站可以正常运行,但几个小时之后,又停止响应,浏览器一直等待。这时查看apache进程数,发现还是150。
三、于是检查Tomcat的Server.xml,发现AJP端口的最大线程数不对,于是修改如下:
<Connector URIEncoding="GBK" port="8009"
maxThreads="1000" minSpareThreads="25" maxSpareThreads="250"
enableLookups="false" redirectPort="8443" acceptCount="500"
debug="0" connectionTimeout="600000"
disableUploadTimeout="true"
protocol="AJP/1.3" />
四、重启Tomcat运行几个小时后,又出现故障,现象如前,在150个进程时停止响应。于是又修改httpd.conf中的perfork部分:
<IfModule prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 100
ServerLimit 1000
MaxClients 1000
MaxRequestsPerChild 10
</IfModule>
五、重启apache后问题依旧,没辙了,找来找去,终于在mod_jk.log中找到了线索,其中
有这样的错误信息:
ajp_send_request::jk_ajp_common.c (1244): (tomcat1) increase the backend idle connection timeout or the connection_pool_minsize
六、于是四处搜资料,得知需要修改workers.properties,按照网上文章,加入如下行:
worker.tomcat1.connection_pool_size=1000
worker.tomcat1.connection_pool_minsize=250
worker.tomcat1.connection_pool_timeout=600
七、重启后问题依旧,再搜,发现还需要在workers.properties中如下行:
worker.tomcat1.socket_timeout=20
八、重启后问题解决,运行一天以后进程数依然只有80个。
问题虽然解决了,但自己对Apache和JK_Mod不精通,有些参数只是看到了就拿来改改试试,不求甚解。因此还有一些疑惑:
一、在另一个站点上使用了默认的workers.properties,没有加connection_pool_size等参数,但访问量明显比我们公司的网站大,却一直运行良好。怀疑跟我们公司网站上提供了几个大文件下载有关,但没有证实。
二、在没有加上worker.tomcat1.socket_timeout=20之前,所有的进程/线程数相关的参数都已经改了,但依然在达到150个进程时停止响应,原因不明。
三、在没有加上worker.tomcat1.socket_timeout=20之前,进程数几小时内就会达到150,但加上以后进程数增长得较为缓慢,一天以后都只有80,原因不明。
看来得找时间好好研究一下Apache和JK_Mod了。
分享到:
相关推荐
11. **监控与管理**:对Apache+Tomcat+JK集群的监控非常重要,可以使用各种工具(如Nagios、Zabbix等)监控服务器状态、请求响应时间和负载情况,以便及时发现并解决问题。 总结来说,Apache+Tomcat+JK组合提供了一...
### Apache+Tomcat服务器集群配置详细步骤 #### 一、引言 在现代Web开发中,随着业务规模的不断扩大和用户需求的日益增长,单一服务器往往难以满足高性能、高可靠性的要求。为了应对这一挑战,通常采用Apache+...
"Apache + Tomcat 负载平衡"的组合是业界常见的解决方案,用于解决高并发访问时服务器压力过大、读取文件速度慢等问题。下面将详细介绍这个主题的相关知识点。 首先,Apache HTTP Server(简称Apache)是一款开源的...
- **408 请求超时**:服务器等待客户端发送请求的时间过长。 - **409 冲突**:请求的资源与当前资源的状态冲突。 - **410 已删除**:如果请求的资源已永久删除,那么应该使用410响应。 - **411 需要有效长度**:...
Apache Tomcat是一款开源的Java Servlet容器,主要用于部署和运行Java Web应用程序,包括JSP和Servlet。它是Apache软件基金会的一部分,并且在Linux操作系统上广泛使用。最新版的Apache Tomcat 8.5.73是在长期支持...
Apache Tomcat是一款开源的Java应用服务器,主要用于运行Servlet和JSP应用。官方原版的`apache-tomcat-8.5.53-windows-x64.zip`是针对Windows 64位系统的版本,包含了所有必要的组件来搭建和运行基于Java EE Web应用...
1. **Java Servlet 3.0**:这个版本支持Servlet 3.0规范,提供了异步处理能力,允许Servlet在不阻塞线程的情况下执行长时间运行的任务,从而提高了服务器的并发性能。 2. **JSP 2.2**:此版本支持JSP 2.2,提供了更...
Apache Tomcat是一款开源的Java应用服务器,特别用于执行Servlet和JSP应用程序。它是由Apache软件基金会维护的一个项目,是Java社区中的重要组成部分。标题"apache-tomcat-6.0.43"指的是Apache Tomcat的第6.0.43版本...
2. **稳定性**:6.0.x系列是一个长期支持(LTS)版本,意味着它经过了长时间的测试和修复,确保了应用的稳定性和安全性。 3. **性能优化**:Tomcat 6.0.41针对Servlet 2.5和JSP 2.1进行了优化,提供了高效的性能和...
这个版本,特别是6.0.53,是Tomcat 6系列中的最高稳定版本,意味着它经过了长时间的测试和优化,具有高度的可靠性和稳定性,对于那些需要在生产环境中部署Java Web应用的用户来说,是一个理想的选择。 Tomcat的核心...
9.0.x系列是Tomcat的长期支持(LTS)版本,意味着它会得到更长时间的安全更新。 2. **操作系统兼容性**:"windows-x64"表明这是针对64位Windows系统的版本。安装64位Tomcat可以利用64位系统的内存优势,处理更大的...
Apache Tomcat是一款开源的Java应用服务器,主要用于部署...9.0.x版本是Tomcat的一个长期支持(LTS)版本,意味着它会得到较长时间的维护和安全更新,因此对于中小企业来说,选择9.0.6这样的稳定版本是一个明智的选择。
这有助于确保应用程序在长时间运行时保持稳定且资源消耗更低。 安全性是任何Web服务器的重要考虑因素。Tomcat 10.0.0加强了安全配置,提供了更多安全相关的API和配置选项。它支持最新的TLS协议版本,如TLSv1.3,以...
Apache Tomcat 7.0.56 是一个广泛使用的开源软件,它是一个实现了Java Servlet、JavaServer Pages(JSP)和Java EE的Web应用程序容器。这个版本是Tomcat服务器的一个重要分支,它提供了对Java标准版7的支持。下面将...
2. **NIO(非阻塞I/O)支持**:除了传统的BIO模型,Tomcat7引入了NIO模型,允许服务器处理更多的连接,尤其适合那些需要长时间保持连接的应用。 3. **JMX(Java Management Extensions)增强**:通过JMX,管理员...
Tomcat是Apache软件基金会的一个开源项目,是实现Java Servlet和JavaServer Pages(JSP)规范的Web应用服务器。在本系统中,Tomcat作为运行环境,承载着在线考试系统的Web应用程序,处理HTTP请求,并将响应返回给...
异步处理允许servlet在执行长时间操作时将控制权返回给容器,从而提高响应速度和性能。 2. **JSP 2.2**:JSP 2.2规范带来了更简洁的语法,增强了EL表达式语言,以及与JSF更好的集成。动态EL允许开发者在表达式中...
### Apache与Tomcat配置负载均衡详解 #### 一、引言 随着互联网技术的发展和用户需求的增长,单一服务器已经难以满足高并发访问的需求。为了提高系统的稳定性和响应速度,负载均衡技术应运而生。本文将详细介绍如何...
Servlet 4.0引入了异步处理能力的增强,使得长时间运行的任务可以在不阻塞主线程的情况下进行。 2. **JSP(JavaServer Pages)**:JSP是HTML和Java代码的结合,用于创建动态网页。开发者可以在HTML模板中嵌入Java...
Tomcat是Apache软件基金会下的一个开源项目,主要用于运行Java Servlet和JavaServer Pages(JSP)。在集群环境中,每个Tomcat实例都是独立的服务节点,负责处理来自Nginx的动态请求。然而,对于Web应用程序而言,...