Prechádzať zdrojové kódy

!10434 启动耗时全过程一次上送
Merge pull request !10434 from 80174847/oilyang_fixed_everything

杨诗友80174847 1 rok pred
rodič
commit
05be63af13

+ 25 - 12
Module/mod_healthmanager/HealthManagerFSM.cpp

@@ -478,12 +478,12 @@ void CHealthManagerFSM::SetVtmLoadResult(int bResult)
 	if (bResult == VtmLoad_AccessAuth_Suc)
 	{
 		eErrCode = GetEntityBase()->GetFunction()->SetSysVar("TerminalStage", "A");
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("AccessAuthSuc")("%d", SP::Module::Comm::RVCGetTickCount() - m_ullAuthStart);
+		m_ullAccessAuthCost = SP::Module::Comm::RVCGetTickCount() - m_ullAuthStart;
 	}
 	else if (bResult == VtmLoad_AccessAuth_servFail) //准入服务端返回失败
 	{
 		eErrCode = GetEntityBase()->GetFunction()->SetSysVar("TerminalStage", "S");
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("AccessAuthFailServ")("%d", SP::Module::Comm::RVCGetTickCount() - m_ullAuthStart);
+		m_ullAccessAuthCost = SP::Module::Comm::RVCGetTickCount() - m_ullAuthStart;
 	}
 	else if (bResult == VtmLoad_MediaLoadFail) //音视频校验不通过
 	{
@@ -492,7 +492,8 @@ void CHealthManagerFSM::SetVtmLoadResult(int bResult)
 	else //其他失败
 	{
 		eErrCode = GetEntityBase()->GetFunction()->SetSysVar("TerminalStage", "C");
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("AccessAuthFailOther")("%d", SP::Module::Comm::RVCGetTickCount() - m_ullAuthStart);
+		if (bResult != VtmLoad_OtherSyncEntityLoadFail)//if haven't call Regist(), no need to calulate the AccessAuth cost
+			m_ullAccessAuthCost = SP::Module::Comm::RVCGetTickCount() - m_ullAuthStart;
 	}
 	if (eErrCode != Error_Succeed)
 		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("set TerminalStage %d,failed:%s", bResult, SpStrError(eErrCode));
@@ -862,14 +863,11 @@ DWORD GetDualTime(SYSTEMTIME& t1, SYSTEMTIME& t2)
 void CHealthManagerFSM::ToLogWarnTermAboutInfo()
 {
 	LOG_FUNCTION();
-	QueryAndSaveDNS();
-	QueryAndSendCPUInfo();
-	QueryAndSendDisplayInfo();
 	bool bTmpEtyNewStart = m_bEntityNewStart;
 	if (m_bEntityNewStart)
 	{
 		SYSTEMTIME shellStartTime;
-		ULONGLONG totalCost = 0;
+		m_ullTotalCost = 0;
 		m_bEntityNewStart = false;
 		CAutoArray<CSimpleStringA> strEntityNames;
 		CAutoArray<int> strEntityIdx;
@@ -881,15 +879,30 @@ void CHealthManagerFSM::ToLogWarnTermAboutInfo()
 			{
 				shellStartTime = Infos[i].startTime;
 				ULONGLONG dwElapseNow = SP::Module::Comm::RVCGetTickCount();
-				totalCost = dwElapseNow - m_ullElapseFromOSStart;
+				m_ullTotalCost = dwElapseNow - m_ullElapseFromOSStart;
 				LogWarn(Severity_Low, Error_Debug, LOG_TRACE_ENTITY_START_TIME,
-					SP::Module::Util::generateConsumeTimeJson("total", SP::Module::Util::formatTime(shellStartTime).c_str(), totalCost).GetData());
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("EntityStartCost")(SP::Module::Util::generateConsumeTimeJson("total", SP::Module::Util::formatTime(shellStartTime).c_str(), totalCost).GetData());
-				break;
+					SP::Module::Util::generateConsumeTimeJson("total", SP::Module::Util::formatTime(shellStartTime).c_str(), m_ullTotalCost).GetData());
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("EntityStartCost")(SP::Module::Util::generateConsumeTimeJson("total", SP::Module::Util::formatTime(shellStartTime).c_str(), m_ullTotalCost).GetData());
+				//break;
 			}
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("%s,%d", strEntityNames[i].GetData(), GetDualTime(Infos[i].startTime, Infos[i].startEndTime));
+			if (strEntityNames[i].Compare("SIPPhone") == 0)
+				m_ullSIPPhoneCost = GetDualTime(Infos[i].startTime, Infos[i].startEndTime);
+			else if (strEntityNames[i].Compare("TokenKeeper") == 0)
+				m_ullTokenKeeperCost = GetDualTime(Infos[i].startTime, Infos[i].startEndTime);
 		}
-		
+		std::map<std::string, std::string> termStartInfo;
+		termStartInfo["SIPPhoneCost"] = CSimpleStringA::Format("%d", m_ullSIPPhoneCost);
+		termStartInfo["TokenKeeperCost"] = CSimpleStringA::Format("%d", m_ullTokenKeeperCost);
+		termStartInfo["TotalCost"] = CSimpleStringA::Format("%d", m_ullTotalCost);
+		termStartInfo["AccessAuthCost"] = CSimpleStringA::Format("%d", m_ullAccessAuthCost);
+		termStartInfo["AccessAuthResult"] = CSimpleStringA::Format("%d", m_iAccessAuth);
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("TerminalStartCost")("%s", generateJsonStr(termStartInfo).second.c_str());
 	}
+	QueryAndSaveDNS();
+	QueryAndSendCPUInfo();
+	QueryAndSendDisplayInfo();
+
     CSimpleStringA csOSVerion(""), csWarnMsg("");
 	std::map<std::string, std::string> termInfo;
 	termInfo["version"] = m_sysInfo.InstallVersion.ToString();

+ 8 - 8
Module/mod_healthmanager/HealthManagerFSM.h

@@ -155,13 +155,13 @@ public:
 		FSM_RULE_ENTRY(s11,s6,USER_EVT_SWITCH_BACK_TO_RVC,6)
 	END_FSM_RULE()
 
-	CHealthManagerFSM():m_SysState("I"),m_pACClient(NULL)
-	, m_iAccessAuth(VtmLoad_AccessAuth_Init)
-	, m_custMngerState(0), m_pDevCtrlClient(NULL), m_bHasAuthEver(false)
-	, m_checkCode(""), m_bFirstAccessAuth(true)
-	, m_bIEBeforeHealth(false), m_bInAccessAuthDoWork(false)
-	, m_bEntityNewStart(true), m_iDoNotUpdateWKDaily(0)
-	, m_wkUpdatePeriod(1), m_bPinPadOpenSuc(false), m_LoadEntityList(""), m_cpuInfo(""){}
+		CHealthManagerFSM() :m_SysState("I"), m_pACClient(NULL)
+		, m_iAccessAuth(VtmLoad_AccessAuth_Init)
+		, m_custMngerState(0), m_pDevCtrlClient(NULL), m_bHasAuthEver(false)
+		, m_checkCode(""), m_bFirstAccessAuth(true)
+		, m_bIEBeforeHealth(false), m_bInAccessAuthDoWork(false)
+		, m_bEntityNewStart(true), m_iDoNotUpdateWKDaily(0)
+		, m_wkUpdatePeriod(1), m_bPinPadOpenSuc(false), m_LoadEntityList(""), m_cpuInfo(""), m_ullAccessAuthCost(0), m_ullSIPPhoneCost(0), m_ullTokenKeeperCost(0) {}
 	~CHealthManagerFSM(){}
 	virtual ErrorCodeEnum OnInit();
 	virtual ErrorCodeEnum OnExit();
@@ -249,7 +249,7 @@ private:
 	bool m_bHasAuthEver, m_bFirstAccessAuth
 		, m_bIEBeforeHealth, m_bInAccessAuthDoWork, m_bEntityNewStart, m_bPinPadOpenSuc;
 	DWORD m_elapseTimeFromOSStart;
-	ULONGLONG m_ullElapseFromOSStart, m_ullAuthStart;
+	ULONGLONG m_ullElapseFromOSStart, m_ullAuthStart, m_ullAccessAuthCost, m_ullTotalCost, m_ullSIPPhoneCost, m_ullTokenKeeperCost;
 	DeviceControlService_ClientBase *m_pDevCtrlClient;
 	CSystemStaticInfo m_sysInfo;
 	std::map<string, string> m_computerInfo;