gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 23:55:41 25 4
gpt4 key购买 nike

我有 Apache tomcat 网络服务器,在此我运行 3-4 个 java spring 和 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"

  1. 我已更改 server.xml 以处理更多连接

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

  1. 我也在我们的项目中使用 c3p0 连接池

    org.hibernate.connection.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 个请求。我的服务器配置是

window server 2012 R2 Datacenter Ram - 64 gb system type-64 bit

知道我如何正确管理所有事情,我需要在我的 tomcat 服务器或应用程序中进行哪些类型的更改。这样我的网站就能处理 2000 个请求。

最佳答案

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

  1. 检查处理请求时哪个步骤花费了这么多时间?你的网络框架是什么? struts2、reSTLet、springMVC、servelt ?
  2. 使用 jvisualvm(或其他工具)分析堆上的对象,观察垃圾收集时间(全 GC 频率),是否有一些缓慢的代码?
  3. 如果有很多查询,在hibernate上添加二级缓存。
  4. 什么是服务器配置,尝试将应用程序分离到多个 tomcat 实例(小心关闭端口等)。

关于java - 如何处理负载并配置 tomcat 7 服务器和应用程序,使其能够处理超过 2000 个请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36756941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com