2011-01-27 3 views
2

ASP.net 기반 응용 프로그램이 있습니다.SQL CPU가 높음 - SqlConnection이 닫히지 않음 - 관련이 있습니까?

SQL 서버 상자에 CPU는 끊임없이 ~ 90~100%

나는 현재, 그러나, 작업, 그는 결코 이전 코더에서 코드를 찾고 inneficient 쿼리 많이 있습니다 내가 MASTER.DBO.SYSPROCESSES 곳에서

SELECT COUNT (*)를 "명령을 기다리는 중"하는 약 450 연결을 얻을, 나는 folloing 쿼리를 실행할 때도록 SqlConnection

을 닫습니다 (또는 처분) 듯 DB_NAME (DBID) = 'CroCMS'및 DBID! = 0 AND cmd = '명령 기다림'

이 문제가 발생 했습니까?

나는 이것을 읽고는 관련이 보인다 : http://www.pythian.com/news/1270/sql-server-understanding-and-controlling-connection-pooling-fragmentation/

우리는 또한 .. 복제가 활성화되어 특별히 때, 시간 제한을 많이 받고 나는 이것이 관련이 있는지 확실하지 않습니다는 ... 장애인 복제 되세요 (트랜잭션) 지금은 괜찮아 보인다 .. (이 서버는 우리의 사무실 데이터베이스 서버에 가입자)

SQL 연결 객체 도움말을 삭제하겠습니까?

답변

1

명령 개체를 처리 할 때 항상 처리해야합니다. 그런 식으로 연결 풀링을 더 잘 사용할 수 있습니다.

easist는 사용하는 문장을 사용합니다.

using (
       var sqlCommand = new SqlCommand(
        "storedprocname", 
        new SqlConnection("connectionstring")) 
        { CommandType = CommandType.StoredProcedure }) 
      { 
      // do what you should.. setting params executing etc etc. 

} 
+0

이 코드는 연결을 만들고 있지만 처리하지는 못한다고 생각합니다. 나는. 먼저 SqlConnection을 만들고 'using'으로 묶습니다. –

2

예, 처리하십시오. 그렇지 않으면 지금 무시하십시오. 명령문이 느리기 때문에 풀은 아마도 크기가 클 수 있습니다. 나는 더 제안 할 것이다 :

  • 진술서를 고치는 것.
  • 응용 프로그램이 PER REQUEST (즉, 동시에 여러 개를 열 수 없음) 연결 만 사용하는지 확인합니다.

SQL을 최적화 한 후에도 문제가 나아지지 않으면 풀을 다시 방문하십시오.

관련 문제