背景:
1、使用的线程池,大小是怎么确定的
2、httpclient参数如何设置的,大小是怎么确定的
3、redis、mysql 连接池参数如何设置,大小是怎么确定的
补充:QPS = 并发数 / 平均响应时间
httpclient:
MaxTotal:池子中的最大连接数
DefaultMaxPerRoute:每个IP+PORT主机对应池子中的最大连接数
MaxConnPerRoute: 每个IP+PORT主机对应池子中的最大连接数
SocketTimeout:读写超时(httpclient 读写第三方接口的超时时间)
ConnectTimeout: 连接超时 (httpclient 连接第三方接口的超时时间)
ConnectionRequestTimeout:客户端从连接池获取连接的超时
SoTimeout:读写超时
TcpNoDelay: 是否延迟发送
场景:
1、单台实例QPS:100/s ,请求耗时平均2s,100 * 2 * 3(扩大3倍) = 600 ,所以可按下面配置
MaxTotal= 600
DefaultMaxPerRoute=MaxConnPerRoute=200
ConnectionRequestTimeout=2000
SocketTimeout=4000
2、模拟压测
tomcat:
maxThreads:
每一次HTTP请求到达Web服务,tomcat都会创建一个线程来处理该请求,那么最大线程数决定了Web服务可以同时处理多 少个请求,默认200
accepCount:
当调用Web服务的HTTP请求数达到tomcat的最大线程数时,还有新的HTTP请求到来,这时tomcat会将该请求放在等待队列中,这个acceptCount就是指能够接受的最大等待数,默认100.如果等待队列也被放满了,这个时候再来新的请求就会被tomcat拒绝(connection refused)
maxConnections:
这个参数是指在同一时间,tomcat能够接受的最大连接数。一般这个值要大于maxThreads+acceptCount
redis:
MaxTotal:设置最大连接数,(根据并发请求合理设置), 600
MaxIdle:设置最大空闲连接数,(根据并发请求合理设置)
MinIdle:设置最小空闲连接数或者说初始化连接数
inEvictableIdleTimeMillis:多长空闲时间之后回收空闲连接
MaxWaitMillis:设置最大等待时间,客户端从连接池时的最大等待时间 2000ms
TestOnBorrow:获取连接后验证是否有效 true
网友评论