연결 모니터링
이 페이지의 내용
개요
이 가이드에서는 Go 드라이버를 사용하여 드라이버의 연결 풀을 모니터링하는 방법을 보여 줍니다. 연결 풀은 드라이버가 MongoDB 인스턴스를 사용해 유지 관리하는 개방형 전송 제어 프로토콜(TCP) 연결의 집합입니다. 연결 풀은 애플리케이션이 생성해야 하는 새로운 연결 수를 줄이는 데 도움이 되므로 애플리케이션이 더 빠르게 실행될 수 있습니다.
성능을 최적화하거나 클라이언트 수명 주기를 이해하기 위해 애플리케이션의 연결 풀 이벤트에 대한 정보를 사용할 수 있습니다.
이벤트 구독
애플리케이션에서 연결 풀 이벤트를 구독하여 해당 이벤트에 대한 세부 정보에 액세스할 수 있습니다. 다음 예제에서는 PoolMonitor
를 인스턴스화하고 배포서버에 연결하여 PoolEvent
이벤트를 구독하는 방법을 보여 줍니다.
var eventArray []*event.PoolEvent cxnMonitor := &event.PoolMonitor{ Started: func(e *event.PoolEvent) { eventArray = append(eventArray, e) }, } clientOpts := options.Client().ApplyURI(uri).SetPoolMonitor(cxnMonitor) client, err := mongo.Connect(context.TODO(), clientOpts)
이벤트 설명
다음 표에서는 드라이버가 발생하는 풀 이벤트의 유형에 대해 설명합니다.
풀 이벤트 유형 | 설명 |
---|---|
ConnectionPoolCreated | 연결 풀이 생성될 때 생성됩니다. |
ConnectionPoolReady | 연결 풀이 준비되면 생성됩니다. |
ConnectionPoolCleared | 풀의 모든 연결이 닫힐 때 생성됩니다. |
ConnectionPoolClosed | 서버 인스턴스가 삭제되기 전에 연결 풀이 닫힐 때 생성됩니다. |
ConnectionCreated | 연결이 생성될 때 생성되지만 작업에 사용될 때 반드시 생성되지는 않습니다. |
ConnectionReady | 연결이 핸드셰이크를 완료하고 작업에 사용할 준비가 된 후에 생성됩니다. |
ConnectionClosed | 연결이 닫힐 때 생성됩니다. |
ConnectionCheckOutStarted | 작업이 실행을 위해 연결을 획득하려고 시도할 때 생성됩니다. |
ConnectionCheckOutFailed | 작업이 실행할 연결을 획득할 수 없을 때 생성됩니다. |
ConnectionCheckedOut | 작업이 실행을 위한 연결을 성공적으로 획득할 때 생성됩니다. |
ConnectionCheckedIn | 작업이 실행된 후 연결이 풀에 다시 체크인될 때 생성됩니다. |
이벤트 문서 예시
다음 섹션에서는 각 유형의 연결 풀 모니터링 이벤트에 대한 샘플 출력을 보여줍니다.
connectionPoolCreated
*event.PoolEvent { "type": "ConnectionPoolCreated", "address": "...", "connectionId": 0, "options": { "maxPoolSize": 100, "minPoolSize": 0, "maxIdleTimeMS": 0 }, "reason": "", "serviceId": null, "error": null }
connectionPoolReady
*event.PoolEvent { "type": "ConnectionPoolReady", "address": "...", "connectionId": 0, "options": null, "reason": "", "serviceId": null, "error": null }
connectionPoolCleared
*event.PoolEvent { "type": "ConnectionPoolCleared", "address": "...", "connectionId": 0, "options": null, "reason": "", "serviceId": null, "error": null }
connectionPoolClosed
*event.PoolEvent { "type": "ConnectionPoolClosed", "address": "...", "connectionId": 0, "options": null, "reason": "", "serviceId": null, "error": null }
connectionCreated 이벤트
*event.PoolEvent { "type": "ConnectionCreated", "address": "...", "connectionId": 1, "options": null, "reason": "", "serviceId": null, "error": null }
connectionReady
*event.PoolEvent { "type": "ConnectionReady", "address": "...", "connectionId": 1, "options": null, "reason": "", "serviceId": null, "error": null }
연결종료
*event.PoolEvent { "type": "ConnectionClosed", "address": "...", "connectionId": 1, "options": null, "reason": "", "serviceId": null, "error": null }
connectionCheckOutStarted 이벤트
*event.PoolEvent { "type": "ConnectionCheckOutStarted", "address": "...", "connectionId": 0, "options": null, "reason": "", "serviceId": null, "error": null }
connectionCheckOutFailed
*event.PoolEvent { "type": "ConnectionCheckOutFailed", "address": "...", "connectionId": 0, "options": null, "reason": "", "serviceId": null, "error": null }
connectionCheckedOut
*event.PoolEvent { "type": "ConnectionCheckedOut", "address": "...", "connectionId": 1, "options": null, "reason": "", "serviceId": null, "error": null }
connectionCheckedIn
*event.PoolEvent { "type": "ConnectionCheckedIn", "address": "...", "connectionId": 1, "options": null, "reason": "", "serviceId": null, "error": null }
추가 정보
MongoDB 배포를 모니터링하는 방법에 대해 자세히 알아보려면 MongoDB를 모니터링하는 방법 문서를 참조하세요.
MongoDB 연결에 학습 보려면 연결 가이드를 참조하세요.
API 문서
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 문서를 참조하세요.
PoolMonitor 유형
PoolEvent 유형
SetPoolMonitor() 메서드