1、减少日志的输出
设置为off
2、调整jvm的大小 百度widows 配置tomcat
-Xms3048M -Xmx3048M -Xmn700M -Xss512K -XX:PermSize=300M -XX:MaxPermSize=300M -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=5 -XX:GCTimeRatio=19 -Xnoclassgc -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=70 -XX:SoftRefLRUPolicyMSPerMB=0
3、压缩去掉
4、msql优化 因为默认是所有加载到java对象
<!-- 首先,setFetchSize()方法与分页无关。该方法只是优化查询内存用的。当设置了setFetchSize()方法后,query得到的ResultSet并不是全部放入内存中,而是将设定的大小的块存入内存,
调用next方法后,cursor移到下一个块的首地址,继续将一个块调入内存。优化了存储,减少了一次性占用内存太大的问题。 该方法不会影响sql语句的最终结果。
默认为从服务器一次取出所有数据放在客户端内存中,fetch size参数不起作用,当一条SQL返回数据量较大时可能会出现JVM OOM。 要一条SQL从服务器读取大量数据,不发生JVM
OOM,可以采用以下方法之一: 1、当statement设置以下属性时,采用的是流数据接收方式,每次只从服务器接收部份数据,直到所有数据处理完毕,不会发生JVM
OOM。 setResultSetType(ResultSet.TYPE_FORWARD_ONLY); setFetchSize(Integer.MIN_VALUE);
2、调用statement的enableStreamingResults方法,实际上enableStreamingResults方法内部封装的就是第1种方式。
3、设置连接属性useCursorFetch=true (5.0版驱动开始支持),statement以TYPE_FORWARD_ONLY打开,再设置fetch
size参数,表示采用服务器端游标,每次从服务器取fetch_size条数据。 -->
<property name="url"
value="jdbc:mysql://localhost:3306/teacher?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=true&useCursorFetch=true&defaultFetchSize=100" />
5、增加查询缓存
QuestionsMapper.xml 替换掉src-com.bei_en.teacher.admin.persistence.mapper.questions下的QuestionsMapper.xml
6、tomcat优化
修改server.xml
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="500" minSpareThreads="20" maxIdleTime="60000" />
</Service>
<Connector executor="tomcatThreadPool"
port="8080" protocol="org.apache.coyote.http11.Http11Protocol"
connectionTimeout="600000" keepAliveTimeout="150000"
redirectPort="8443" URIEncoding="UTF-8"
useBodyEncodingForURI="true" maxPostSize="0"
minSpareThreads="100" maxSpareThreads="300" acceptCount="10000" />
设置为off
2、调整jvm的大小 百度widows 配置tomcat
-Xms3048M -Xmx3048M -Xmn700M -Xss512K -XX:PermSize=300M -XX:MaxPermSize=300M -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=5 -XX:GCTimeRatio=19 -Xnoclassgc -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=70 -XX:SoftRefLRUPolicyMSPerMB=0
3、压缩去掉
4、msql优化 因为默认是所有加载到java对象
<!-- 首先,setFetchSize()方法与分页无关。该方法只是优化查询内存用的。当设置了setFetchSize()方法后,query得到的ResultSet并不是全部放入内存中,而是将设定的大小的块存入内存,
调用next方法后,cursor移到下一个块的首地址,继续将一个块调入内存。优化了存储,减少了一次性占用内存太大的问题。 该方法不会影响sql语句的最终结果。
默认为从服务器一次取出所有数据放在客户端内存中,fetch size参数不起作用,当一条SQL返回数据量较大时可能会出现JVM OOM。 要一条SQL从服务器读取大量数据,不发生JVM
OOM,可以采用以下方法之一: 1、当statement设置以下属性时,采用的是流数据接收方式,每次只从服务器接收部份数据,直到所有数据处理完毕,不会发生JVM
OOM。 setResultSetType(ResultSet.TYPE_FORWARD_ONLY); setFetchSize(Integer.MIN_VALUE);
2、调用statement的enableStreamingResults方法,实际上enableStreamingResults方法内部封装的就是第1种方式。
3、设置连接属性useCursorFetch=true (5.0版驱动开始支持),statement以TYPE_FORWARD_ONLY打开,再设置fetch
size参数,表示采用服务器端游标,每次从服务器取fetch_size条数据。 -->
<property name="url"
value="jdbc:mysql://localhost:3306/teacher?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=true&useCursorFetch=true&defaultFetchSize=100" />
5、增加查询缓存
QuestionsMapper.xml 替换掉src-com.bei_en.teacher.admin.persistence.mapper.questions下的QuestionsMapper.xml
6、tomcat优化
修改server.xml
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="500" minSpareThreads="20" maxIdleTime="60000" />
</Service>
<Connector executor="tomcatThreadPool"
port="8080" protocol="org.apache.coyote.http11.Http11Protocol"
connectionTimeout="600000" keepAliveTimeout="150000"
redirectPort="8443" URIEncoding="UTF-8"
useBodyEncodingForURI="true" maxPostSize="0"
minSpareThreads="100" maxSpareThreads="300" acceptCount="10000" />