测试并发与优化多线程、大批量处理SQL性能的一些心得(有心得就会更新)

本文分享了在进行并发测试时遇到的问题及解决方案,重点探讨了服务器线程池配置、数据连接池优化、方法内的连接池管理和SQL批量插入优化。通过调整线程池参数、设置合理的数据库访问限制和利用存储过程,提高了服务的并发处理能力和性能。
摘要由CSDN通过智能技术生成

测试并发与优化性能的一些心得

最近在做之前提到的服务的并发测试,有一些心得和优化处理。

N个并发请求服务器时,先由服务器的线程池来处理请求(同java普通的线程池)也是当核心线程数用完以后后来的请求会进入队列中。所以当并发量到一定程度的时候必须使用负载均衡(就分摊一下请求就可以)分摊一下并发压力,不然就算硬件在好效率也不一定上的去。

负载均衡我就不说了,不是我配置的,也不归我管没办法提供真实参数了。

有几种情况导致数据丢失:

1.内存不足:导致服务器无法创建新的线程处理请求(请求的数据量大内存自然紧张),该线程所涉及的请求则没有处理(负载均衡+定制化处理服务,如:超过30M数据量就调用其他服务处理)。

2.超过最大线程与队列,服务器会拒绝请求(负载均衡)。

3.服务器宕机,断网,等等外部因素(写一个查询补偿服务,如:定时查询数据库是否存在该数据不存在由查询服务再次请求一次)。

4.超过数据库最大访问量,或访问数据库超时等数据库问题(根据需求设置访问量控制)。

5.请求等待超时(等待时间长一些)。

 

1.服务器线程池:

处理方式:配置服务器线程池评估并发量通过负载均衡区把并发稀释到N个服务器。

只写一下本地tomcat的(服务器是weblogic的内存配的2048,weblogic调优推荐一篇博客:http://blog.csdn.net/rznice/article/details/7283494):

1.set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m;-Duser.timezone=GMT+08;
一定加在catalina.bat最前面。

 

2.Tomcat配置:server。Xml

    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"

        maxThreads="500" minSpareThreads="20" maxIdleTime="60000" />

 

 <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" />

protocol="org.apache.coyote.http11.Http11Protocol" 写这个别写HTTP1.1否则有误。

 

参数解释:(摘抄自百度)

maxThreads:Tomcat可创建的最大的线程数,每一个线程处理一个请求;

minSpareThreads:最小备用线程数,tomcat启动时的初始化的线程数;

maxSpareThreads:最大备用线程数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程;

acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,就是被排队的请求数,超过这个数的请求将拒绝连接。

connnectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。 
enableLookups:是否允许DNS查询

 

注意:可以多个connector公用1个线程池。

l connectionTimeout - 网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。

l keepAliveTimeout - 长连接最大保持时间(毫秒)。此处为15秒。

l maxKeepAliveRequests - 最大长连接个数(1表示禁用,-1表示不限制个数,默认100个。一般设置在100~200之间) the maximum number of HTTP requests that can be held in the pipeline until the connection is closed by the server. Setting this attribute to 1 disables HTTP/1.0 keep-alive, as well as HTTP/1.1 keep-alive and pipelining. Setting this to -1 allows an unlimited number of pipelined or kee

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值