欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Nacos后臺頻繁打印get changedGroupKeys:[]的問題及解決

 更新時(shí)間:2024年01月09日 14:40:30   作者:"小王"  
這篇文章主要介紹了Nacos后臺頻繁打印get changedGroupKeys:[]的問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

一、問題描述

在使用Nacos作為注冊中心情況下,客戶端啟動后頻繁打印get changedGroupKeys:[]

c.a.n.client.config.impl.ClientWorker    : get changedGroupKeys:[]
c.a.n.client.config.impl.ClientWorker    : get changedGroupKeys:[]
c.a.n.client.config.impl.ClientWorker    : get changedGroupKeys:[]
c.a.n.client.config.impl.ClientWorker    : get changedGroupKeys:[]
c.a.n.client.config.impl.ClientWorker    : get changedGroupKeys:[]
c.a.n.client.config.impl.ClientWorker    : get changedGroupKeys:[]
c.a.n.client.config.impl.ClientWorker    : get changedGroupKeys:[]
c.a.n.client.config.impl.ClientWorker    : get changedGroupKeys:[]
c.a.n.client.config.impl.ClientWorker    : get changedGroupKeys:[]

先貼解決方案,再來分析原因

二、解決

nacos配置中加上禁用心跳日志

logging:
  level:
    com.alibaba.nacos.client.config.impl: WARN

在這里插入圖片描述

三、問題分析

從日志可以看出 get changedGroupKeys:[] 是從c.a.n.client.config.impl.ClientWorker對象中打印出來的

貼出ClientWorker類中打印get changedGroupKeys:[]方法代碼:

public class ClientWorker {
	//長輪詢?nèi)蝿?wù),檢測服務(wù)端配置文件是否更改,30秒超時(shí)
	class LongPollingRunnable implements Runnable {
        private int taskId;

        public LongPollingRunnable(int taskId) {
            this.taskId = taskId;
        }

        @Override
        public void run() {

            List<CacheData> cacheDatas = new ArrayList<CacheData>();
            List<String> inInitializingCacheList = new ArrayList<String>();
            try {
                // check failover config
                for (CacheData cacheData : cacheMap.get().values()) {
                    if (cacheData.getTaskId() == taskId) {
                        cacheDatas.add(cacheData);
                        try {
                        	//檢查本地配置
                            checkLocalConfig(cacheData);
                            if (cacheData.isUseLocalConfigInfo()) {
                                cacheData.checkListenerMd5();
                            }
                        } catch (Exception e) {
                            LOGGER.error("get local config info error", e);
                        }
                    }
                }

                // check server config
                List<String> changedGroupKeys = checkUpdateDataIds(cacheDatas, inInitializingCacheList);
                
                //可以看出這里打印的心跳日志 get changedGroupKeys:[]
                LOGGER.info("get changedGroupKeys:" + changedGroupKeys);

                for (String groupKey : changedGroupKeys) {
                    String[] key = GroupKey.parseKey(groupKey);
                    String dataId = key[0];
                    String group = key[1];
                    String tenant = null;
                    if (key.length == 3) {
                        tenant = key[2];
                    }
                    try {
                    	//30秒超時(shí),30秒一檢測,仔細(xì)發(fā)現(xiàn)能看出每隔30秒打印一遍get changedGroupKeys:[]心跳日志
                        String[] ct = getServerConfig(dataId, group, tenant, 3000L);
                        CacheData cache = cacheMap.get().get(GroupKey.getKeyTenant(dataId, group, tenant));
                        cache.setContent(ct[0]);
                        if (null != ct[1]) {
                            cache.setType(ct[1]);
                        }
                        LOGGER.info("[{}] [data-received] dataId={}, group={}, tenant={}, md5={}, content={}, type={}",
                            agent.getName(), dataId, group, tenant, cache.getMd5(),
                            ContentUtils.truncateContent(ct[0]), ct[1]);
                    } catch (NacosException ioe) {
                        String message = String.format(
                            "[%s] [get-update] get changed config exception. dataId=%s, group=%s, tenant=%s",
                            agent.getName(), dataId, group, tenant);
                        LOGGER.error(message, ioe);
                    }
                }
                for (CacheData cacheData : cacheDatas) {
                    if (!cacheData.isInitializing() || inInitializingCacheList
                        .contains(GroupKey.getKeyTenant(cacheData.dataId, cacheData.group, cacheData.tenant))) {
                        cacheData.checkListenerMd5();
                        cacheData.setInitializing(false);
                    }
                }
                inInitializingCacheList.clear();
				//方法的最后會再把LongPollingRunnable提交執(zhí)行,遞歸,再執(zhí)行
                executorService.execute(this);

            } catch (Throwable e) {

                // If the rotation training task is abnormal, the next execution time of the task will be punished
                LOGGER.error("longPolling error : ", e);
                executorService.schedule(this, taskPenaltyTime, TimeUnit.MILLISECONDS);
            }
        }
    }

}

分析:

從ClientWorker 代碼中分析出,nacos客戶端和服務(wù)端會通過心跳來檢測nacos服務(wù)端的配置文件是否發(fā)生變化,這也是nacos動態(tài)配置實(shí)現(xiàn)的原理,客戶端通過定時(shí)線程長輪詢達(dá)到動態(tài)配置的效果,可以看到這個(gè)日志的級別為INFO,我們把nacos的日志級別改為WARN,這樣就不會每次心跳檢測都打印get changedGroupKeys:[]了。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java數(shù)據(jù)結(jié)構(gòu)算法稀疏數(shù)組示例詳解

    java數(shù)據(jù)結(jié)構(gòu)算法稀疏數(shù)組示例詳解

    這篇文章主要為大家介紹了java數(shù)據(jù)結(jié)構(gòu)算法稀疏數(shù)組示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • java開放地址法和鏈地址法解決hash沖突的方法示例

    java開放地址法和鏈地址法解決hash沖突的方法示例

    這篇文章主要介紹了java開放地址法和鏈地址法解決hash沖突的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Java正則表達(dá)式如何匹配特定html標(biāo)簽內(nèi)的內(nèi)容

    Java正則表達(dá)式如何匹配特定html標(biāo)簽內(nèi)的內(nèi)容

    這篇文章主要給大家介紹了關(guān)于Java正則表達(dá)式如何匹配特定html標(biāo)簽內(nèi)的內(nèi)容的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Log4j日志記錄框架配置及用法解析

    Log4j日志記錄框架配置及用法解析

    這篇文章主要介紹了Log4j日志記錄框架配置及用法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 利用java獲取某個(gè)文件夾下的所有文件

    利用java獲取某個(gè)文件夾下的所有文件

    這篇文章主要給大家介紹了關(guān)于如何利用java獲取某個(gè)文件夾下的所有文件的相關(guān)資料,在從事web開發(fā)工作中,經(jīng)常需要對本地某一個(gè)目錄下的文件進(jìn)行處理,需要的朋友可以參考下
    2023-07-07
  • Java調(diào)用打印機(jī)的2種方式舉例(無驅(qū)/有驅(qū))

    Java調(diào)用打印機(jī)的2種方式舉例(無驅(qū)/有驅(qū))

    我們平時(shí)使用某些軟件或者在超市購物的時(shí)候都會發(fā)現(xiàn)可以使用打印機(jī)進(jìn)行打印,這篇文章主要給大家介紹了關(guān)于Java調(diào)用打印機(jī)的2種方式,分別是無驅(qū)/有驅(qū)的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • Spring框架JavaMailSender發(fā)送郵件工具類詳解

    Spring框架JavaMailSender發(fā)送郵件工具類詳解

    這篇文章主要為大家詳細(xì)介紹了Spring框架JavaMailSender發(fā)送郵件工具類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • JAVA?module-info.java文件詳解

    JAVA?module-info.java文件詳解

    這篇文章主要介紹了JAVA?module-info.java文件詳解,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java IO流之字符緩沖流實(shí)例詳解

    Java IO流之字符緩沖流實(shí)例詳解

    這篇文章主要介紹了Java IO流之字符緩沖流,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • java解析sina視頻

    java解析sina視頻

    本文介紹了一個(gè)java解析sina視頻地址的例子,從這個(gè)例子中可以學(xué)習(xí)到j(luò)ava使用sax解析xml的方法,大家可以參考修改成其它功能
    2014-01-01

最新評論