http性能测试
http client和http pool都是在局域网向一台tomcat发送
1:http client
public static String callPostJson(String url, String json) {
HttpClient client = new HttpClient();
client.getParams().setContentCharset("utf-8");
client.getHttpConnectionManager().getParams().setSoTimeout(timeout);
PostMethod post = new PostMethod(url);
String result = StringUtils.EMPTY;
try {
RequestEntity entity = new StringRequestEntity(json,"application/json","UTF-8");
post.setRequestEntity(entity);
post.setRequestHeader("Content-Type","application/json;charset=UTF-8");
client.executeMethod(post);
result = post.getResponseBodyAsString();
} catch (SocketTimeoutException se) {
logger.error(se.getMessage(), se);
throw new ServiceException("connection.timeout");
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
return "{\"success\":\"false\",\"msg\":\"" + ex.getMessage() + "\"}";
} finally {
post.releaseConnection();
}
return result;
}
测试结果;5000条耗时43秒
2:http pool
client工厂
private static CloseableHttpClient httpClient;
private static PoolingHttpClientConnectionManager cm;
static {
cm = new PoolingHttpClientConnectionManager();
cm.setMaxTotal(500);
cm.setDefaultMaxPerRoute(50);
final RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(10000).setConnectTimeout(1000).setConnectionRequestTimeout(500).build();
httpClient = HttpClients.custom().setConnectionManager(cm).setDefaultRequestConfig(requestConfig).build();
}
public static CloseableHttpClient getHttpClient() {
return httpClient;
}
http工具类
public static void callPostJson(String url, String param) {
CloseableHttpClient httpClient = HttpPoolFactory.getHttpClient();
HttpPost post = new HttpPost(url);
try {
StringEntity s = new StringEntity(param);
s.setContentEncoding("UTF-8");
s.setContentType("application/json");//发送json数据需要设置contentType
post.setEntity(s);
httpClient.execute(post);
} catch (Exception e) {
logger.error(e.getMessage(), e);
} finally {
post.releaseConnection();
}
}
测试结果;5000条耗时21秒
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~