当前位置: 首页 > 知识库问答 >
问题:

如何处理负载并配置tomcat 7服务器和应用程序,使其能够处理2000多个请求

葛炯
2023-03-14

我有ApacheTomcatWeb服务器,在这里我运行3-4JavaSpring和hibernate应用程序。但问题是,当有太多请求进入服务器时,服务器会给出内存不足错误或堆大小错误,最后由于服务器没有响应而导致站点关闭。有时还会出现连接错误或套接字错误。我希望我的服务器至少能处理2000个请求。

到现在为止,我用了很多方法来处理这个问题。

  1. 通过更改setenv中的大小来增加服务器的堆大小。sh文件

CATALINA_OPTS=“$CATALINA_OPTS-Dfile.encoding=UTF8-Djava.net.preferIPv4Stack=true-Dorg.apache.CATALINA.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES=false-Duser.timezone=GMT-Xmx1024m-XX:MaxPermSize=1024m”

acceptCount=“1000”maxConnections=“1500”redirectPort=“8443”URIEncoding=“UTF-8”compression=“on”compressionMinSize=“2048”NoCompressionSerAgents=“gozilla,traviata”compressableMimeType=“text/html,text/xml,text/plain,application/javascript,text/javascript,text/css”/

我还在我们的项目中使用c3p0连接池

组织。冬眠联系C3P0ConnectionProvider 14400选择1;

<property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<property name="hibernate.connection.username">xxx</property>
<property name="hibernate.connection.password">xxx</property>
<property name="hibernate.connection.pool_size">1000</property>
<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
<property name="javax.persistence.validation.mode">none</property>     

但我的服务器无法同时处理500多个请求。我的服务器配置是

Windows server 2012 R2 Datacenter Ram-64 gb系统类型-64 bit

任何关于我如何正确管理所有事情的想法,我需要在tomcat服务器或应用程序中进行哪些类型的更改。使我的网站能够处理2000个请求。

共有2个答案

孟振
2023-03-14

为了避免内存问题(堆大小错误),为什么不增加tomcat内存配置?

由于您有64G,您可以按如下方式设置memeory配置:

-Xmx50G-Xms10G

如果你使用java8只需添加GC算法到:

-XX:UseG1GC

例子:

JAVA_OPTS=“-Xmx50G-Xms10G-XX:UseG1GC”

蒋鸿文
2023-03-14

首先,你应该找到应用程序的瓶颈(这取决于你的场景),增加内存大小,Tomcat池大小和JDBC池大小也许可以提高性能,但不是真正的重点。

  1. 检查在处理请求时哪个步骤花费了这么多时间?你的网络框架是什么?struts2、restlet、springMVC、servelt
 类似资料:
  • 我是Java新手,希望接受包含股市详细信息的字符串。如果现有字符串包含脚本的购买订单,请按给定价格查找卖家。如果没有匹配项可用,则将新订单添加到现有采购订单队列。 这些需要尽可能快地完成,或者最好并行完成,以便给定的应用程序可以在最短的时间内处理尽可能多的订单。

  • 搜索AWS应用程序负载平衡器在其可并发处理的最大请求方面的限制。它只提到网络负载平衡器可以处理数百万个请求,但没有提到ALB。AWS文档仅在规则、监听器和目标群体上提及qoutas。任何文档都会很有帮助。谢谢

  • 问题内容: 我正在用Java开发SMS应用程序。我的客户通过SMS发送查询,查询将以HTTP请求的形式通过SMS网关转发给我的服务器。现在,我的应用程序处理了请求,并通过SMS网关再次将响应发送回客户端。最多仅发送300个字符作为响应。我期望流量很高(每秒2000个请求)。我想将我的应用程序托管在一些虚拟主机公司(考虑mochahost)。托管之前我应该​​考虑哪些因素(RAM,CPU等的中间因素

  • 我正在尝试在我的应用程序中使用AWS应用程序负载平衡器,其中包含WAF支持。同时,我还需要对反向代理的支持。AWS应用程序负载平衡器是否处理反向代理?

  • 这是处理来自客户端列表请求的基类,如,从网格列表的请求。 让我们首先介绍该类是在何时及如何处理列表请求的: 首先必须从客户端触发列表请求。可能的情形有: a) 打开含网格的列表页面。在创建网格对象之后,基于当前的可见列、初始排序、过滤器等建立了一个 ListRequest 对象,并将其提交到服务器端。 b) 用户点击列头排序、点击分页按钮或者刷新按钮时触发与情形 A 同样的事件。 c) 手动使用