perf(common): 优化线程池参数与请求日志,降低噪音并提升可观测性
This commit is contained in:
@@ -40,6 +40,9 @@ public class ThreadPoolConfig {
|
|||||||
executor.setCorePoolSize(corePoolSize);
|
executor.setCorePoolSize(corePoolSize);
|
||||||
executor.setQueueCapacity(queueCapacity);
|
executor.setQueueCapacity(queueCapacity);
|
||||||
executor.setKeepAliveSeconds(keepAliveSeconds);
|
executor.setKeepAliveSeconds(keepAliveSeconds);
|
||||||
|
executor.setThreadNamePrefix("async-pool-");
|
||||||
|
executor.setWaitForTasksToCompleteOnShutdown(true);
|
||||||
|
executor.setAwaitTerminationSeconds(30);
|
||||||
// 线程池对拒绝任务(无线程可用)的处理策略
|
// 线程池对拒绝任务(无线程可用)的处理策略
|
||||||
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
|
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
|
||||||
return executor;
|
return executor;
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import javax.servlet.http.HttpServletRequest;
|
|||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.web.servlet.HandlerInterceptor;
|
import org.springframework.web.servlet.HandlerInterceptor;
|
||||||
|
|
||||||
@@ -25,6 +26,9 @@ public class RequestLoggingInterceptor implements HandlerInterceptor {
|
|||||||
private static final String START_TIME_ATTRIBUTE = "startTime";
|
private static final String START_TIME_ATTRIBUTE = "startTime";
|
||||||
public static final String BUSINESS_RESULT_ATTRIBUTE = "requestLoggingBusinessResult";
|
public static final String BUSINESS_RESULT_ATTRIBUTE = "requestLoggingBusinessResult";
|
||||||
|
|
||||||
|
@Value("${logging.business-error-as-warn:false}")
|
||||||
|
private boolean businessErrorAsWarn;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
|
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
@@ -208,8 +212,13 @@ public class RequestLoggingInterceptor implements HandlerInterceptor {
|
|||||||
long duration, BusinessResult businessResult) {
|
long duration, BusinessResult businessResult) {
|
||||||
String template = "Request completed: {} {} - {} {} ({}ms) businessCode={} success={} message={}";
|
String template = "Request completed: {} {} - {} {} ({}ms) businessCode={} success={} message={}";
|
||||||
if (isBusinessError(businessResult)) {
|
if (isBusinessError(businessResult)) {
|
||||||
log.error(template, method, uri, status, statusText, duration,
|
if (businessErrorAsWarn) {
|
||||||
businessResult.getCode(), businessResult.isSuccess(), businessResult.getMessage());
|
log.warn(template, method, uri, status, statusText, duration,
|
||||||
|
businessResult.getCode(), businessResult.isSuccess(), businessResult.getMessage());
|
||||||
|
} else {
|
||||||
|
log.error(template, method, uri, status, statusText, duration,
|
||||||
|
businessResult.getCode(), businessResult.isSuccess(), businessResult.getMessage());
|
||||||
|
}
|
||||||
} else if (isBusinessWarn(businessResult)) {
|
} else if (isBusinessWarn(businessResult)) {
|
||||||
log.warn(template, method, uri, status, statusText, duration,
|
log.warn(template, method, uri, status, statusText, duration,
|
||||||
businessResult.getCode(), businessResult.isSuccess(), businessResult.getMessage());
|
businessResult.getCode(), businessResult.isSuccess(), businessResult.getMessage());
|
||||||
|
|||||||
Reference in New Issue
Block a user