JVM 2부: 성능 모니터링 및 조정_01_개요_Silicon Valley

1- 다창 면접 질문

알리페이:

Alipay의 세 가지 측면: JVM 성능 튜닝을 위해 무엇을 했습니까?

기장:

JVM 메모리 최적화를 수행했습니까?

SQL, JVM, 아키텍처 및 데이터베이스의 네 가지 측면에서 최적화 아이디어에 대해 이야기하십시오.

앤트 파이낸셜:

JVM 컴파일 최적화

JVM 성능 튜닝을 위해 수행된 작업

어떤 JVM 진단 및 튜닝 도구를 사용해 보셨습니까?

양면: JVM을 조정하는 방법, 적절한 힙 메모리 및 스택 공간의 양

3면: 어떤 JVM 관련 분석 도구를 사용해 보셨습니까? 구체적인 성능 조정 단계는 무엇입니까?

알리:
JVM 튜닝을 수행하는 방법은 무엇입니까? 방법은 무엇입니까?

메모리 누수 문제를 이해하는 방법? 어떤 상황에서 메모리 누수가 발생할 수 있습니까? 해결 방법?

바이트 비트:

세 가지 측면: JVM을 조정하는 방법과 매개변수를 조정하는 방법은 무엇입니까?

2- 배경 참고 사항

1. 생산 환경의 문제

  • 프로덕션 환경에서 메모리 오버플로가 발생하면 어떻게 해야 합니까?
  • 프로덕션 환경에서 서버에 얼마나 많은 메모리를 할당해야 합니까?
  • 가비지 수집기의 성능을 조정하는 방법은 무엇입니까?
  • 프로덕션 환경에서 높은 CPU 로드를 처리하는 방법은 무엇입니까?
  • 프로덕션 환경에서 애플리케이션에 몇 개의 스레드를 할당해야 합니까?
  • 로그를 추가하지 않고 요청에 의해 특정 코드 라인이 실행되는지 여부를 확인하는 방법은 무엇입니까?
  • 로그를 추가하지 않고 실시간으로 메서드의 입력 및 반환 값을 확인하는 방법은 무엇입니까?

2. 튜닝이 필요한 이유는 무엇입니까?

  • OOM 방지
  • OOM 해결
  • Full GC 발생 확률 감소

3. 단계별 고려사항

  • 생방송을 시작하기 전에
  • 프로젝트 운영 단계
  • 스레드 OOM 발생

3- 튜닝 개요

1. 모니터링 근거

  • 실행 로그
  • 예외 스택
  • GC 로그
  • 스레드 스냅샷
  • 힙 덤프 스냅샷

2. 일반적인 튜닝 방향

  • 현명하게 코드를 작성
  • 하드웨어 리소스의 완전하고 합리적인 사용
  • 합리적인 JVM 튜닝

4- 성능 최적화를 위한 단계

1단계(문제 식별): 성능 모니터링

비간섭적 또는 침해적 방식으로 애플리케이션 운영 성능 데이터를 수집하거나 보는 행위.

모니터링은 일반적으로 생산, 품질 평가 또는 개발 환경에서 수행되는 예방적 또는 선제적 활동을 의미합니다.

애플리케이션 이해 관계자가 성능 문제를 제기하지만 충분한 단서를 제공하지 않는 경우 먼저 성능 모니터링이 필요하고 성능 분석이 필요합니다.

  • GC가 빈번하다
  • CPU 부하가 너무 높음
  • 메모리 누수
  • 이중 자물쇠
  • 프로그램 응답 시간이 길다

2단계(문제 해결): 성능 분석

참조의 처리량 또는 응답성에 영향을 미치는 운영 성능 데이터의 방해 수집입니다 .

성능 분석은 성능 질문에 답한 결과이며 일반적으로 성능 모니터링보다 초점이 더 맞춰져 있습니다.

성능 분석은 프로덕션 환경에서 거의 수행되지 않으며 일반적으로 성능 모니터링 이후 단계인 품질 평가, 시스템 테스트 또는 개발 환경에서 수행됩니다 .

  • GCviewer 또는 http://gceasy.io를 통해 GC 로그 출력 및 로그 정보 분석
  • 명령줄 도구, jstack, jmap, jinfo 등의 유연한 사용
  • 힙 파일을 덤프하고 메모리 분석 도구를 사용하여 파일 분석
  • Ali Arthas 또는 jconsole, JVisualVM을 사용하여 JVM 상태를 실시간으로 확인
  • jstack 스택 정보 보기

3단계(문제 해결): 성능 조정

애플리케이션 응답성이나 처리량을 향상시키기 위해 파라미터, 소스코드, 속성 구성을 변경하는 활동 성능 튜닝은 성능 모니터링 및 성능 분석 후 활동입니다.

  • 사업 배경에 따라 메모리를 적절히 늘리고 가비지 컬렉터를 선택하십시오.
  • 코드 최적화, 메모리 사용 제어
  • 노드 압력 분산을 위한 기계 추가
  • 스레드 풀의 스레드 수를 합리적으로 설정
  • 미들웨어를 사용하여 캐싱, 메시지 대기열 등과 같은 프로그램 효율성을 향상시킵니다.

5-성능 평가/테스트 지표

1. 일시정지 시간(또는 응답시간)

요청 제출과 요청에 대한 응답 반환 사이에 소요된 시간, 일반적으로 평균 응답 시간에 중점을 둡니다.

일반적인 작업에 해당하는 시간 목록

작동하다 해당 시간
사이트를 열다 몇 초
레코드에 대한 데이터베이스 쿼리(인덱스 포함) 10밀리초
기계식 디스크의 일회성 주소 지정 및 위치 지정 4밀리초
기계식 디스크에서 순차적으로 1M 데이터 읽기 2밀리초
SSD 디스크에서 순차적으로 1M 데이터 읽기 0.3밀리초
원격 Redis에서 데이터 읽기 0.5밀리초
메모리에서 1M 데이터 읽기 10마이크로초
Java 프로그램 원시 메소드 호출 몇 마이크로초
네트워크 전송 2Kb 데이터 1미묘

가비지 수집 중:

일시 중지 시간: 가비지 수집을 수행하는 동안 프로그램의 작업자 스레드가 일시 중지되는 시간입니다.

2. 처리량

  • 단위 시간당 완료된 작업(요청)의 양 측정

  • GC에서: 총 실행 시간에 대한 사용자 코드 실행 시간의 비율(총 실행 시간: 프로그램 실행 시간 + 메모리 복구 시간)

    처리량은 1 - 1 / (1+n)입니다. -XX:GCTimeRatio=n

3. 동시수

  • 동시에 서버와의 실제 상호 작용을 위한 요청 수

4. 메모리 사용량

  • Java 힙 영역이 차지하는 메모리 크기

5. 상호관계

おすすめ

転載: blog.csdn.net/weixin_43811294/article/details/127081109