检查是否有大循环重复产生新对象实体。
检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。
检查List、MAP等集合对象是否有使用完后,未清除的问题。List、MAP等集合对象会始终存有对对象的引用,使得这些对象不能被GC回
上面的情况都没有,主要原因内存过低了(tomcat默认系统内存的四分之一),加大到最大2G时没有报内存溢出错误
测试环境的测试和优化情况
1测试环境(配置过低了,承受不了太高的并发量),(共用宽带)
cpu 2核 内存 4G
2设置setenv.sh,有很多jvm参数没有仔细调试,可借助jvisualvm好好测试,找到一较优的参数
JAVA_OPTS='-server -Xms1024M -Xmx2048M'
3server.xml 连接使用连接池
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="300" minSpareThreads="50"/>
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
4代码中database连接池,classpath/spring/beans-datasources.xml
<!-- 每个分区最大的连接数 -->
<property name="maxConnectionsPerPartition" value="50"/>
<!-- 每个分区最小的连接数 -->
<property name="minConnectionsPerPartition" value="30"/>
5注册登陆需要同步助学宝,测试环境使用模拟助学宝的程序,模拟登陆注册,并发量太小(现在瓶颈出现在这里)
解决方式:可以让测试环境能访问 https://wszl.bdxiaodai.com/loan/thirdParty/login 布丁小贷的生产环境,只测登陆
检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。
检查List、MAP等集合对象是否有使用完后,未清除的问题。List、MAP等集合对象会始终存有对对象的引用,使得这些对象不能被GC回
上面的情况都没有,主要原因内存过低了(tomcat默认系统内存的四分之一),加大到最大2G时没有报内存溢出错误
测试环境的测试和优化情况
1测试环境(配置过低了,承受不了太高的并发量),(共用宽带)
cpu 2核 内存 4G
2设置setenv.sh,有很多jvm参数没有仔细调试,可借助jvisualvm好好测试,找到一较优的参数
JAVA_OPTS='-server -Xms1024M -Xmx2048M'
3server.xml 连接使用连接池
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="300" minSpareThreads="50"/>
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
4代码中database连接池,classpath/spring/beans-datasources.xml
<!-- 每个分区最大的连接数 -->
<property name="maxConnectionsPerPartition" value="50"/>
<!-- 每个分区最小的连接数 -->
<property name="minConnectionsPerPartition" value="30"/>
5注册登陆需要同步助学宝,测试环境使用模拟助学宝的程序,模拟登陆注册,并发量太小(现在瓶颈出现在这里)
解决方式:可以让测试环境能访问 https://wszl.bdxiaodai.com/loan/thirdParty/login 布丁小贷的生产环境,只测登陆