一次数据表十万的加载经历

来源:互联网 发布:红楼梦 明亡历史 知乎 编辑:程序博客网 时间:2024/06/11 07:35
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&amp;characterEncoding=UTF-8&amp;zeroDateTimeBehavior=convertToNull&amp;tinyInt1isBit=true&amp;useCursorFetch=true&amp;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" />   




0 0
原创粉丝点击