Im Aktivitätsmonitor verursacht die folgende Abfrage eine hohe CPU und eine durchschnittliche Dauer von 281 ms.
WAITFOR (
RECEIVE conversation_handle
, service_contract_name
, message_type_name
, message_body
FROM ExternalMailQueue
INTO @msgs
)
, TIMEOUT @rec_timeout
Irgendwelche Ideen oder Schritte, wie man das löst?
sql-server
service-broker
Ankit Shah
quelle
quelle
Antworten:
Dies ist ein roter Hering.
WAITFOR (RECEIVE...)
soll per definitionem ... auf nachrichten warten! Daher bedeutet 281 Sekunden einfach, dass 281 Sekunden lang keine Nachricht zu empfangen war. In diesem Fall ist die Anwendung der externe Sendeprozess von Database Mail, der im Leerlauf wartet und darauf wartet, dass Nachrichten in die Warteschlange gestellt werden (dh darauf wartensp_send_db_mail
, dass sie aufgerufen werden). Hier gibt es nichts zu "lösen".quelle