2010-04-17 9 views
1

새로운 CF8 앱을 시작했으며 느리게 실행됩니다. ColdFusion을 둘러 보는 테스트 (데이터베이스 유틸리티 내 쿼리)는 정상 속도 (80ms)를 보여줍니다. CF8은 60 ~ 80 초 같은 쿼리를 반환합니다!ColdFusion 8 성능 저하

저는 온라인에서보고 있으며 CF8 및 성능 문제에 대한 많은 게시물을 보았지만 해결책에 대한 전반적인 이해를 얻지는 못했습니다. 많은 사람들이 일을 시도하고 CF7에 문제가 없다고 말했습니다. 또한 서버의 불안정성과 가비지 수집 및 메모리 힙과 관련된 일부 오류가 나타납니다.

우리는 CF8에서 실행되는 많은 다른 응용 프로그램을 가지고 있으며 적절하게 수행합니다 ... 프로그래머는 전문가 또는 전문가가 아닙니다. 우리는 이것을 단 하나의 질의로 반환하여 영원히 돌아 오게 만들었으므로 복잡한 테스트는 아닙니다.

알려진 CF8 문제 또는 분명한 조정이 있습니까? 처음부터 다시 시작하여 새로운 환경을 배워야한다면 마감 시간을 지키지 않을 것입니다.

JoeBob

+0

그래서, 데이터베이스 클라이언트를 실행하는 쿼리는 평균 80ms가 필요하지만 ColdFusion에서의 CFQUERY를 통해 동일한 쿼리를 60 ~ 80 초 정도? 동일한 앱의 다른 검색어에 정상적인 시간이 걸리나요? Coldfusion 8에는 꽤 좋은 서버 모니터가 있습니다. 조사해 보셨습니까? 3 가지 모니터링 옵션을 모두 켜면 코드가 매달려있는 위치를 정확히 볼 수 있으며 실행중인 DB 쿼리를 볼 수 있습니다. 데이터베이스 서버에서도이 쿼리에 60-80 초가 걸린다 고보고합니까? 또는 DB 서버에 쿼리가 빠르게 실행되고 있습니까? –

+0

필자의 경험과 CF 쇼 8에 나오는 블로그의 대부분은 7보다 큰 개선점입니다. 모든 패치와 핫픽스를 적용 했습니까? – kevink

+2

왜 쿼리를 공유하지 않습니까? – Yisroel

답변

2

이 좋아, 여기의 I는 할 거라고 무엇을 : 다음 어떻게되는지 질의 LIMIT 1 (당신이 가진 dB)로 TOP 1에 넣어했던

  1. .

  2. 페이지의 유일한 것으로 60 년대를 가져간 쿼리를 실행 해보십시오. 아무것도 출력하지 말고 쿼리를 실행하십시오.

  3. 메모리 및 GC에 문제가있는 경우 디버깅을 끄고 관리자의 모든 디버깅 옵션을 선택 취소하십시오.

  4. CF8과 함께 제공되는 모니터 도구가 모든 옵션을 해제했는지 확인하십시오.

이것이 도움이되지 않는다면 우리는 더 나아갈 수 있습니다.

편집 : 문제가 될 수있는 첫 번째 것은 반환 된 레코드의 수입니다. 둘째, 많은 데이터 처리를 수행하며 디버깅이 켜져있는 경우 페이지 실행 중에 일어나는 모든 일이 기록됩니다. 나는 서버가 디버깅을 통해 거의 10GB의 RAM을 채우는 것을 보았고, 동일한 프로세스가 없었다면 40MB가 필요했다. 세 번째 옵션은 실제로 서버 또는 설정에 문제가있는 것입니다.

+0

우리는 Top 100을 시도했지만 쿼리는 여전히 동일한 시간 이상을 반환했습니다. 이제는 페이지에서 유일한 것이고 출력하지 않고 제안대로 쿼리를 실행하는 것입니다. 쿼리는 반환하는 레코드가 많을수록 더 오래 걸립니다. 그것은 단지 몇 가지 레코드를 반환하는 경우 다소 합리적인 몇 초 반환, 여전히 너무 느린 걸립니다. 하지만 수천 개의 레코드가 반환되면 1 분 정도 걸립니다. 그러나 다시 테스트에서 아무것도 출력하지 않고 선택을 수행하고 있습니다. 디버깅 옵션을 확인하겠습니다. – JoeBob

0

마지막 설명에 따르면 문제는 CF가 아닌 쿼리와 관련이있는 것으로 보입니다. 어떤 데이터베이스를 실행하고 있습니까? 테이블에 인덱스가 있습니까?

+1

데이터베이스와 더불어 어떤 프로토콜과 드라이버를 사용하여 연결하고 있습니까? ODBC 또는 JDBC? 저는 최근 SQL Server 2005에서 SSL JDBC 드라이버를 사용하여 cfsqltype = "CF_SQL_VARCHAR"의 CFQUERYPARAM을 사용하는 쿼리를 실행하는 데 문제가있었습니다. 쿼리 대신 저장 프로 시저를 사용하면 지연 문제가 해결됩니다. –

0

반환 할 모든 열이 필요합니까? SELECT *을 사용하고 있습니까? 필요한 열만 반환해야합니다. 데이터를 출력하지 않더라도 많은 양의 데이터가 데이터베이스에서 웹 서버로 전달됩니다.

0

도움을 주신 모든 분들께 감사드립니다 ... 제안 된 것처럼 문제는 CF 문제가 아닐 것입니다 ... 우리는 PHP에서 동일한 조건의 동일한 쿼리를 실행하기 위해 테스트를 실행하고 있지만 모두 내 경험은 웹 이외의 응용 프로그램과 관련이 있으며, "선택"은 화면에 아무런 출력이 없어도 "모든 데이터를 선택하여 웹 서버로 전송"한다는 것을 실제로 인식하지 못했습니다. 20,000 개 이상의 레코드 (많은 원치 않는 필드 포함)로 전송하는 데 엄청난 시간이 걸렸습니다. 이전에 데이터베이스 서버가이 지연 동안 활성화되지 않았다고 알려졌고 잘못된 정보가 있음이 밝혀졌습니다.필자는 프로그래머를 우회하여 관리자를 만나서 성능 모니터를보고 분명히 잘못되었는지 확인해야했습니다. 데이터 전송에는 시간과 대역폭이 필요했습니다.

JoeBob