Algumas consultas estão atingindo minha CPU com extrema força. sp_WhoIsActive
informa qual sp_OAMethod
é a causa (a sql_text
coluna aponta para ela) e que há grandes esperas do PREEMPTIVE_OS_GETPROCADDRESS
tipo wait. Dado que sp_OAMethod
é um procedimento armazenado interno, como posso depurar isso?
Estou em uma versão 2019 do SQL Server, 15.0.alguma coisa.
Primeiro, eu pararia totalmente de usar a automação OLE, pois, para ser franco, ela está repleta de problemas. Existem muitas alternativas melhores. Permitir que alguém hospede um servidor web dentro do processo do SQL Server não está ajudando ninguém.
GetProcAddress é uma API do Windows usada para localizar o ponto de entrada de uma função dentro de um módulo. Como você está usando a automação OLE, as "coisas" que você pediu à automação exigem que ela encontre e execute essas "coisas", entre nesta API do Windows que é usada em toda a comunidade Windows C/C++. O tipo de espera está dizendo que está esperando por isso.
Para depurá-lo ainda mais, você desejará habilitar e capturar o rastreamento ETW para SQL Server (como wpr , xperf , logman) como um começo para ver o que isso pode mostrar. Verificar as pilhas em busca de intrusos no modo kernel ou longos tempos de leitura de disco seria um começo. Tenho certeza de que os suspeitos do costume levantarão a cabeça.
Do texto de recompensa:
Não há espaço suficiente no banco de dados de troca de pilha para listar exaustivamente todos os problemas que eles podem causar. Estou sendo um tanto hiperbólico, mas também é bastante preciso. É o mesmo que perguntar: "Precisamente quais problemas um bug desconhecido no código causaria?". Pode ser algo entre "nada" porque o caminho do código não é exercido, até travamentos, corrupção de memória, etc., é uma questão muito ampla.
Cobrimos os pontos principais, então criar uma lista resumida seria:
A resposta que tenho responderá à sua pergunta. Na verdade, agora você tem DUAS perguntas separadas, uma das quais (o texto generoso) eu chamaria de "ponta do iceberg" e provavelmente VTC como "Precisa de detalhes ou clareza".