C#으로 작성된 ASP.NET 웹 응용 프로그램이 있습니다. SQL Server 2008 데이터베이스를 사용합니다. 일부 SQL 쿼리가 SQL 서버를 교착 상태로 만들고 있으며 SQL Server의 성능이 좋지 않은 것 같습니다. 진단 이벤트 로깅을 추가 할 것을 생각했지만 어떤 방법인지 모르겠습니다. 일반 Windows 응용 프로그램을 작성한 경우 Windows 이벤트 로그 또는 단순한 텍스트 파일로 처리합니다. 궁금 해서요, 웹 애플리케이션에서 어떻게 처리할까요?ASP.NET 웹 응용 프로그램에 대한 이벤트 로거를 구현하는 방법은 무엇입니까?
답변
ASP.Net 웹 응용 프로그램에서 로깅 할 수있는 옵션은 다양합니다.
NLog은 성능이 뛰어나고 텍스트 파일, 데이터베이스, 전자 메일 또는 Sentinel과 같은 GUI 로그 뷰어를 포함하여 심각도를 기준으로 광범위한 로그 대상을 제공하기 때문에 고려해야 할 가치가있는 요소 중 하나입니다.
그렇기 때문에 응용 프로그램 수준 로깅이 SQL Server 교착 상태를 진단하는 최선의 방법은 아닙니다. 나는 .NET 버전 2.0 이후 풍부한 기능과 유연한 구성과 loggin에 시스템 구축이 해당 작업
@ErikJ에 동의합니다. NLog 및 Log4Net은 훌륭한 솔루션입니다. – Jeremy
에 대한 SQL Server 프로파일 러로 시작하는 것이 좋습니다 것입니다. 다음과 같이 시작할 수 있습니다 this article on MSDN 어떤 이유로 대부분의 사람들은 사용하지 않고 로깅을 위해 Log4net 또는 NLog를 선호합니다. 첫 번째는 자바 로깅 도구의 포트이고 두 번째는 다시 생각하고 있습니다. 저는 개인적으로 필터가있는 TraceSource를 사용하는 것을 선호합니다. 기본적으로 ADO.NET에서도이를 지원합니다.
SQL 측에서 교착 상태가 발생하면 ASP.NET에서 전체 그림을 인식 할 수 없습니다.
WITH LOCK 문에 대한 쿼리를 확인하고 제거하기 전에 먼저 그 이유를 확인하는 것이 좋습니다.
그렇지 않으면 SQL 서버 진단 관리자를 통해 문제가되는 쿼리를 찾거나 순전히 SQL 측에서 교착 상태를 재현 할 수있는 경우 해당 쿼리에 WITH NOLOCK을 추가하십시오. T
그의 솔루션은 훨씬 간단합니다. 더 나은 솔루션은 처음부터 교착 상태가 발생하는 이유의 근본 원인을 파악하는 것입니다.
데드락 문제에 대해서는이 도움말을 참조하십시오 [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
당신을 위해 SQL 서버 태그를 추가했습니다. – RandomUs1r