문제

JMeter를 사용하여 응용 프로그램의 성능을 테스트하고 있습니다. 그러나 JMeter에서 20 개의 요청을 보낼 때 알게되었습니다.이 결과는 SQL 서버에 20 개의 새로운 레코드를 추가해야하지만 5 개의 새로운 레코드 만 발견해야합니다. 이는 SQL Server가 다른 요청을 버린다는 것을 의미합니다 (로그를 가져 왔기 때문에 다른 요청이 버려졌습니다. , 새 레코드 삽입이 SQL Server로 전송되는지 확인하십시오.)

아무도 아이디어가 있습니까? SQL Server가 초당 처리 할 수있는 임계 값 수는 얼마입니까? 아니면 구성이 필요합니까?

예, 내 응용 프로그램에서 시도했지만 5 개의 요청 만 허용되는 것 같습니다. 구성 방법을 모르면 더 많은 것을 수락 할 수 있습니다.

도움이 되었습니까?

해결책

초당 요청의 NR이 SQL Server에 직접 문장되어 인서트를 버리는 것을 확신하지 못합니다. 아마도 인서트를 롤백하거나 커밋하지 않는 응용 프로그램 로직 오류가있을 수 있습니다. 또는 응용 프로그램이 동시성을 처리하지 못하고 제약 조건을 위반하는 데이터를 삽입합니다. 교착 상태에 대한 서버 로그도 확인합니다.

다른 팁

로깅을 위해 SQL 프로파일 러 또는 LINQ 데이터 컨텍스트를 사용하여 실제로 서버로 전송 된 내용을 확인한 다음 문제가 무엇인지 결정하십시오.

다음과 같이 데이터 컨텍스트 로그를 활성화합니다.

datacontext.Log = Console.Out;

참고로, SQL Server에서 초당 10,000 개의 트랜잭션을 처리하고 있으므로 이것이 문제라고 생각하지 않습니다.

이것은 어떤 유형의 쿼리를하고 있는지에 따라 매우 의존합니다. 이미 버퍼에있는 데이터를 요청하는 많은 쿼리를 가질 수 있으므로 디스크 읽기 액세스가 필요하지 않거나 실제로 디스크 액세스가 필요한 읽기가 필요합니다. 데이터베이스가 작고 메모리가 충분하면 항상 메모리에 모든 데이터가있을 수 있습니다. 액세스는 매우 빠르면 100+ 쿼리/초를 얻을 수 있습니다. 디스크를 읽어야하는 경우 하드웨어에 의존합니다. PC 유형 플랫폼에서 얻을 수있는 가장 빠른 옵션 인 UltrASCSI-160 드라이브가있는 UltrASCSI-160 컨트롤러를 선택했습니다. 매일 밤 약 75'000 레코드를 처리합니다 (다른 서버에서 다운로드됩니다). 프로세스 각각의 레코드에 대해이 프로그램은 새 레코드를 올바른 '슬롯'에 넣기 위해 약 4-10 쿼리를 만듭니다. 전체 프로세스는 약 3 분이 걸립니다. 나는 이것을 768MB의 RAM으로 850MHz AMD Athlon 기계에서 실행하고 있습니다. 이것이 속도에 대한 약간의 표시를 제공하기를 바랍니다.

SQL Server 및 기타 RDBM에 대한 벤치 마크 테스트를 보려면 성과위원회 웹

SQL Server 프로파일을 사용하여 쿼리 실행 방법을 확인할 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top