2012-03-22 3 views
4

나는 asp.net 2.0 응용 프로그램에서 NLog를 사용하고 있습니다. 트래픽이 많이 발생하고 오류 로깅 및 통계 목적으로 많은 데이터 (하루 평균 약 5000 개의 로그 레코드)를 기록합니다. 두 개의 서로 다른 데이터베이스 대상을 사용하며 각 대상은 저장 프로 시저를 호출하며 둘 다 동일한 연결 문자열 (SQL Server)을 사용합니다.Nlog 데이터베이스 대상 - keepConnection을 사용할지 여부를 지정 하시겠습니까?

일부 문서에서 대상 정의를 복사 한 후 두 대상 모두 keepConnection이 "true"로 설정되어 있습니다. 기본 설정입니다. 제 질문은 이 바람직합니까? 나는 데이터베이스에서 NLog가 열어 놓은 많은 열린 연결을 종종보고 (활동 모니터에서 열려있는 프로세스를보고 있음), 때때로 NLog에서 연결 오류가 발생했습니다. keepConnection을 끄려는 유혹을 받지만 많은 수의 열기 및 닫기 작업이 걱정됩니다. 나는 소스 코드를 보지 않았고 어쨌든 내 자신의 질문에 대답 할 수 있을지 확신하지 못하므로 상위 응용 프로그램이있는 풀과 관련하여 연결이 어떻게 작동하는지 잘 모르겠습니다.

모든 의견, 경고 또는 조언이 필요하십니까? 내 질문이 약간 불투명하다는 것을 알고 있습니다.이 속성에 대한 기본 설명서 이외에 아무것도 찾을 수없는 모자이며 찬반론에 대한 의견을 듣고 싶습니다. 왜 NLog에 처음? 감사합니다. .

+0

PS : 그냥 내 dev에 환경에서 2.0.0.0로 전환했지만, NLog 1.0.0.505를 사용하고 . –

+0

MS SQL Server를 사용하고 있습니까? –

답변

1

전통적으로 keepConnection은 사용자가 명시한 정확한 이유 때문에 활성화되었으므로 많은 양의 연결을 신속하게 열거 나 닫는 것이 끔찍합니다. 비활성화 된 경우 NLog는 연결을 열고 단일 로그 문을 작성하고 모든 연결에 대해 닫습니다. https://github.com/nlog/nlog/wiki/AsyncWrapper-target 아마 좋은 기본 배치 크기는 100

인 : 닫으 연결을 원하는 경우에

, 당신은 항상 일괄 비동기 버퍼를

확인 로그를 작성하여 로깅 성능을 향상시키기 위해 래퍼를 사용할 수 있습니다 너를 위해서. 이 경우 keepConnection을 사용하지 않는 것이 좋습니다. 이를 통해 NLog는 100 개의 로그 메시지를 대기시킨 다음 연결을 열고 모두 쓰고 연결을 닫습니다.

또한 하루에 5000 개가 기록하기에는 너무 낮습니다. 분당 4 로그로 나오고 확실히로드가되지 않습니다. 다른 것과 같은 소리는 틀립니다.

가장 먼저 떠오르는 것은 일반적으로 트랜잭션이 필요한 SQL Server를 사용하고 있다는 것입니다. 기본적으로는

useTransactions=true 
.. 그래서 명시 적으로 로그 설정에서 거래를 할 수 있는지 확인하도록 NLog에서 비활성화되어

https://github.com/nlog/nlog/wiki/Database-target

+0

async-wrapper 힌트를 보내 주셔서 감사합니다. + – granadaCoder

관련 문제