Gateway 액세스 제한 시간 반환 504

4030 단어

문제 정리


【현상】Gateway 액세스 제한 시간
{
    "timestamp": "2019-06-29 11:45:13",
    "path": "/admin/user/info",
    "status": 504,
    "error": "Gateway Timeout",
    "message": "Response took longer than configured timeout"
}

【방법】 오류 위치에 따라 원본 코드를 보고,
AbstractCommand-> HystrixObservableTimeoutOperator-> final Reference tl = HystrixTimer.getInstance().addTimerListener(listener);
  • 시간 감청 클래스를 보았습니다
  • public Reference addTimerListener(final TimerListener listener) {
            startThreadIfNeeded();
            // add the listener
    
            Runnable r = new Runnable() {
    
                @Override
                public void run() {
                    try {
                        listener.tick();
                    } catch (Exception e) {
                        logger.error("Failed while ticking TimerListener", e);
                    }
                }
            };
    
            ScheduledFuture> f = executor.get().getThreadPool().scheduleAtFixedRate(r, listener.getIntervalTimeInMilliseconds(), listener.getIntervalTimeInMilliseconds(), TimeUnit.MILLISECONDS);
            return new TimerReference(listener, f);
        }

    2. 포인트 찾기
        listener.getIntervalTimeInMilliseconds()

    3. 이어서 리스터의 실현을 본다
            @Override
            public int getIntervalTimeInMilliseconds() {
                return properties.timerDelayInMilliseconds().get();
            }
    

    4.properties 키 클래스 찾기
    HystrixCollapserProperties

    5. 드디어 핵심 속성을 찾았다
    timerDelayInMilliseconds
    
     protected HystrixCollapserProperties(HystrixCollapserKey key, Setter builder, String propertyPrefix) {
            this.maxRequestsInBatch = getProperty(propertyPrefix, key, "maxRequestsInBatch", builder.getMaxRequestsInBatch(), default_maxRequestsInBatch);
            this.timerDelayInMilliseconds = getProperty(propertyPrefix, key, "timerDelayInMilliseconds", builder.getTimerDelayInMilliseconds(), default_timerDelayInMilliseconds);
            this.requestCacheEnabled = getProperty(propertyPrefix, key, "requestCache.enabled", builder.getRequestCacheEnabled(), default_requestCacheEnabled);
            this.metricsRollingStatisticalWindowInMilliseconds = getProperty(propertyPrefix, key, "metrics.rollingStats.timeInMilliseconds", builder.getMetricsRollingStatisticalWindowInMilliseconds(), default_metricsRollingStatisticalWindow);
            this.metricsRollingStatisticalWindowBuckets = getProperty(propertyPrefix, key, "metrics.rollingStats.numBuckets", builder.getMetricsRollingStatisticalWindowBuckets(), default_metricsRollingStatisticalWindowBuckets);
            this.metricsRollingPercentileEnabled = getProperty(propertyPrefix, key, "metrics.rollingPercentile.enabled", builder.getMetricsRollingPercentileEnabled(), default_metricsRollingPercentileEnabled);
            this.metricsRollingPercentileWindowInMilliseconds = getProperty(propertyPrefix, key, "metrics.rollingPercentile.timeInMilliseconds", builder.getMetricsRollingPercentileWindowInMilliseconds(), default_metricsRollingPercentileWindow);
            this.metricsRollingPercentileWindowBuckets = getProperty(propertyPrefix, key, "metrics.rollingPercentile.numBuckets", builder.getMetricsRollingPercentileWindowBuckets(), default_metricsRollingPercentileWindowBuckets);
            this.metricsRollingPercentileBucketSize = getProperty(propertyPrefix, key, "metrics.rollingPercentile.bucketSize", builder.getMetricsRollingPercentileBucketSize(), default_metricsRollingPercentileBucketSize);
        }

    Gateway의 시간 초과는 Hystrix의 속성을 통해 제어되는 Orz입니다.
    방향이 틀렸으니 빨리 방향을 바꾸어라https://www.cnblogs.com/520playboy/p/8074347.html
    총결산
    Gateway의 속성을 찾으려고 한참 동안 시도했지만 인터넷에서 여러 가지 찾았지만 결국 원본 코드를 보면서 방향이 틀렸다는 것을 발견했습니다. 방향을 조정했습니다.bingo.
    다음으로 전송:https://www.cnblogs.com/mengjianzhou/p/11106221.html

    좋은 웹페이지 즐겨찾기