2013-03-01 3 views
1

C#으로 작성된 ASP.NET 웹 응용 프로그램이 있습니다. SQL Server 2008 데이터베이스를 사용합니다. 일부 SQL 쿼리가 SQL 서버를 교착 상태로 만들고 있으며 SQL Server의 성능이 좋지 않은 것 같습니다. 진단 이벤트 로깅을 추가 할 것을 생각했지만 어떤 방법인지 모르겠습니다. 일반 Windows 응용 프로그램을 작성한 경우 Windows 이벤트 로그 또는 단순한 텍스트 파일로 처리합니다. 궁금 해서요, 웹 애플리케이션에서 어떻게 처리할까요?ASP.NET 웹 응용 프로그램에 대한 이벤트 로거를 구현하는 방법은 무엇입니까?

+1

데드락 문제에 대해서는이 도움말을 참조하십시오 [http://stackoverflow.com/questions/12422986/sql-query-to-get-the-deadlocks-in-sql-server-2008][1] [1] : http://stackoverflow.com/questions/12422986/sql-query-to-get-the-deadlocks-in-sql-server-2008 – Singleton

+0

당신을 위해 SQL 서버 태그를 추가했습니다. – RandomUs1r

답변

3

ASP.Net 웹 응용 프로그램에서 로깅 할 수있는 옵션은 다양합니다.

NLog은 성능이 뛰어나고 텍스트 파일, 데이터베이스, 전자 메일 또는 Sentinel과 같은 GUI 로그 뷰어를 포함하여 심각도를 기준으로 광범위한 로그 대상을 제공하기 때문에 고려해야 할 가치가있는 요소 중 하나입니다.

그렇기 때문에 응용 프로그램 수준 로깅이 SQL Server 교착 상태를 진단하는 최선의 방법은 아닙니다. 나는 .NET 버전 2.0 이후 풍부한 기능과 유연한 구성과 loggin에 시스템 구축이 해당 작업

Analyzing Deadlocks with SQL Server Profiler

+0

@ErikJ에 동의합니다. NLog 및 Log4Net은 훌륭한 솔루션입니다. – Jeremy

1

에 대한 SQL Server 프로파일 러로 시작하는 것이 좋습니다 것입니다. 다음과 같이 시작할 수 있습니다 this article on MSDN 어떤 이유로 대부분의 사람들은 사용하지 않고 로깅을 위해 Log4net 또는 NLog를 선호합니다. 첫 번째는 자바 로깅 도구의 포트이고 두 번째는 다시 생각하고 있습니다. 저는 개인적으로 필터가있는 TraceSource를 사용하는 것을 선호합니다. 기본적으로 ADO.NET에서도이를 지원합니다.

+0

좋은 거래. 내장 된 로그는 어디에 저장됩니까? 파일 시스템 파일 또는 데이터베이스는 어디에 저장됩니까? – c00000fd

+0

@ c00000fd 저장하도록 구성하십시오. 다음은 청취자에 대한 정보입니다. http://msdn.microsoft.com/en-us/library/4y5y10s7.aspx – vittore

+0

IMHO 내장 된 로깅 프레임 워크는 NLog 또는 Log4Net과 같은 솔루션의 완성도가 부족합니다. –

0

SQL 측에서 교착 상태가 발생하면 ASP.NET에서 전체 그림을 인식 할 수 없습니다.

WITH LOCK 문에 대한 쿼리를 확인하고 제거하기 전에 먼저 그 이유를 확인하는 것이 좋습니다.

그렇지 않으면 SQL 서버 진단 관리자를 통해 문제가되는 쿼리를 찾거나 순전히 SQL 측에서 교착 상태를 재현 할 수있는 경우 해당 쿼리에 WITH NOLOCK을 추가하십시오. T

그의 솔루션은 훨씬 간단합니다. 더 나은 솔루션은 처음부터 교착 상태가 발생하는 이유의 근본 원인을 파악하는 것입니다.