2012-11-12 3 views
0

저는 stbuts2, JAXB, Apache HTTP 클라이언트를 사용하여 비즈니스 로직의 다른 서버, oracle db를 사용하여 일부 선택 작업과 logs.There를 삽입하는 애플리케이션을 사용합니다.성능 향상 - 시작하는 방법

  1. 이 현실적인, 세션 관리에 대한 동시 해시 맵의 무거운 사용은 정적 데이터의 많은이 약 150 TPS입니다 지금 얻을 너무 국지적 인 TPS의 ServletContext에 캐시되는 존재와 요구 사항은 3000 TPS를 얻는 것입니다?
  2. 내가 무엇을보고 시작할 수 있습니까?

이제 자바 5 어떤 포인터에 대한

감사를 사용

+4

모든 최적화 작업은 병목 현상을 진단하기 위해 프로파일 링으로 시작됩니다. –

답변

2
  1. 당신은 어디에 이해하는 JProfiler와, yourkit, 또는 다른 프로파일 링 도구를 사용해야합니다 수 있도록하는 코드 수준에서 병목 현상입니다. 가능한 장소에 대한

어떤 생각을 볼 수 있습니다 :

XML 및 직렬화 :
1. 내가 JAXB와 함께 몇 가지 성능 문제를 보았다.
XML은 필수입니까? 성능면에서 내가 아는 대부분의 JSON 시리얼 라이저는 JAXB보다 낫다.
2. 또한 모든 데이터를 직렬화해야하고 일부 데이터가 일시적으로 변경되지 않아야한다고 생각합니다. 3. XML 문서 (DOM)로 작업하면 성능이 저하됩니다.


DB :
1. 오라클 DB 쿼리를 분석하기 위해 explain을 사용하십시오. (이것이 오라클에서 호출 된 방법입니다. 실행 계획을 보여주고 개선 방법을 찾을 수 있도록 설명합니다.) .
2. 저장 프로 시저의 사용을 고려하십시오.이 프로 시저는 Oracle 서버에서 컴파일되며 성능이 향상됩니다 (생성 된 쿼리와 비교).
3. DB에서 적절한 색인을 사용하십시오.
4. 일부 경우 조인을 제거하면 데이터 복제 (예, 추울 수 있음)를 고려하십시오.
5. IN 대 EXISTS와 같은 문제를 이해하고 어느 것이 사용해야하는지.

데이터 액세스 레이어 :
1. DB에 대한 중복 쿼리를 피하기 위해 일부 엔티티 캐시 (즉, 1 레벨 또는 2 레벨 캐시 (최대 절전 모드) 또는 자체 구현)를 사용할 수 있는지 확인하십시오.

6. 동시 처리 -
충분한 정보를 제공하지 않았습니다.
1. 가능하면 ReaderWriterLock을 사용하고 "동기화"하지 말아야합니다.
2. 가능한 짧게 코드 영역을 동기화하십시오.

3.JDK 6으로 이동! 거기서 동기화 된 성능이 향상되었다고 들었습니다. 7. 트랜잭션 :
1. 트랜잭션은 값 비싼 리소스이므로 "읽기 전용"코드 흐름을 위해 트랜잭션을 열지 않도록하십시오.
2. 가능한 한 트랜잭션이 짧아야합니다.

나는 계속해서 갈 수 있지만 실제로 결과 + 시스템에 대해 더 설명해야합니다. 그래서 우리는 여러분에게 직접 지시 할 수 있습니다.

+1

@ zaske : 일반적으로 유용한 대답으로 유용한 좋은 질문을 던졌습니다. + – Jayan

+0

@Jayan - 칭찬에 감사드립니다. 퍼포먼스 튜닝이 힘들다는 것을 알기 때문에이 질문에 답하는 것이 중요합니다. 그래서 나는 사람들에게 어떻게해야하는지에 대한 지침을주고 싶습니다. –

+0

많은 분들께 감사 드리며, 제가 수행 한 단계와 프로파일 링 결과에 계속 게시 할 것입니다. xml 파싱을 피할 수 있습니다. 외부 응용 프로그램과 상호 작용하여 xml 응답을 보냅니다. 응답은 매우 유익했습니다. –