最近在对公司服务器进行压测,环境ubuntu20.0 使用ab进行对小程序接口进行压测(对小程序接口的压测使用同一个wx.login 凭证code 后端代码处理一下如果code无效就返回一个默认的openid(这种方法适用于测试)就可以模拟登录了)在进行压测时tps低的离谱才几十 后对代码进行分析 找到问题所在 在小程序去code2session时这个请求居然响应时间高达五六百毫秒 http是我们自己封装的一个工具类 后来使用RestTemplate的请求响应时间降低到了几十毫秒 小面上代码
public class RestTemplateAutoConfiguration {
@Resource
RestProperties restProperties;
@Primary
@Bean
public RestTemplate buildRestTemplate() {
RestTemplate restTemplate = new RestTemplate();
HttpComponentsClientHttpRequestFactory hcchrf = new HttpComponentsClientHttpRequestFactory();
// 指定连接池配置,否则线上容易出现请求排队导致接口超时问题
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
connectionManager.setMaxTotal(restProperties.getMaxTotal());
connectionManager.setDefaultMaxPerRoute(restProperties.getDefaultMaxPerroute());
hcchrf.setHttpClient(
HttpClientBuilder.create()
.setDefaultRequestConfig(RequestConfig.custom().setSocketTimeout(restProperties.getScoketTimeOut()).setConnectTimeout(restProperties.getConTimeOut()).setConnectionRequestTimeout(restProperties.getRequestTimeOut()).build())
.setConnectionManager(connectionManager)
.setKeepAliveStrategy(new DefaultConnectionKeepAliveStrategy())
.build());
restTemplate.setRequestFactory(hcchrf);
return restTemplate;
}