2012-04-20 6 views
0

우리는 응용 프로그램 서버로 Jboss를 사용하고 DB 서버로 MS Sql Server를 사용하는 3 계층 Java 응용 프로그램을 사용합니다.tcp/ip에서 jdbc가 로컬 시스템보다 훨씬 느림

동일한 시스템에서 Jboss 및 DB 서버를 실행하면 별도의 시스템에있는 경우 존중면에서 성능이 50 % 향상됩니다. 어떻게 큰 차이를 설명 할 수 있을까요? Jboss 및 DB 서버가 실행되는 시스템은 최상의 워크 스테이션 (인텔 CPU를 사용할 수있는 최상의 시스템)이며 네트워크는 비즈니스 표준 인프라가있는 1Gb 이더넷입니다.

Google 네트워크 (대기 시간, 처리량 등 ...)에 문제가 있거나 그 차이를 설명 할 수있는 다른 이유가 있다고 생각하십니까?

답변

1

음, 너무 많은 가능성이 있습니다 : 1) 네트워크 설정 2) 방화벽 등 통신 서비스 4)의 3) 구현

나는 모든 서비스, 옵션, 필터를 사용하지 않도록하는 것이 좋습니다 및 그런 다음 하나씩 활성화하십시오. 그래도 작동하지 않으면 코드를 확인하십시오.

행운을 빕니다, 쉽지 않습니다!

2

다음과 같은 요소가 잠재적으로 DB 접근에서, 위의 경우에

1) 네트워크 대기 시간을 성능에 영향을 미칠 수 있습니다 : 로컬 컴퓨터에서는 1ms 이하가 될 것입니다. DB 서버 & 응용 프로그램 서버가 다른 위치에있는 경우 대기 시간이 더 길어집니다. 특정 요청을 처리하기 위해 "n"DB 호출을 수행하면 지연은 n * 2 * 대기 시간이됩니다.

해결책 : 전화를 더 적게 사용하십시오. 참조 데이터 집합에 캐싱을 사용하십시오.

2) 애플리케이션 서버에 액세스 위치 : 사용자가 미국에있는 경우 & 애플리케이션 서버 인도에 다음 네트워크 대기 시간은 약 200 밀리 것이다. 많은 css & js 파일이 페이지에로드되면 사용 된 브라우저에 따라 많은 지연이 발생할 수 있습니다.

해결책 : 모든 js 파일을 하나의 파일로 결합하십시오. js & css에는 GZip을 사용하십시오. JS를 축소하십시오. 브라우저 캐시를 효과적으로 사용하십시오.

3) 위의 두 가지가 병목 현상이 아닌 경우 응용 프로그램이 배포 된 서버에서 CPU 디스크의 & 디스크 속도를 확인하십시오.

1

구성을 모르는 SQL Server는 기본적으로 명명 된 파이프를 전송으로 사용합니다. 로컬에서는 TCP/IP보다 빠른 인 메모리 내부 프로세스 통신이됩니다. 원격 인 경우 파이프를 TCP/IP를 통해 전송해야하므로 TCP/IP 스택 (실제 전송은 물론)을 마샬링/언 마샬링하는 데 자체 오버 헤드가 추가됩니다.

당신은 TCP를 사용한다고하지만 실제로 네임드 파이프를 로컬로 사용하고있을 수 있습니다. 연결 문자열은 어떻게 생겼습니까?

관련 문제