3년 간의 Java 아웃소싱 후 Ali는 내부적으로 테스트를 통과했지만 결국 튜닝 경험에 떨어졌습니다!

머리말

현재 시대에 동시성 성능 튜닝에 대한 이해는 기술 발전 트랙에서 최고가 되기 위한 플러스가 되어야 합니다. 개발, 아키텍처 또는 관리 위치 또는 기타 인터넷 관련 위치에 있는지 여부는 중요하지 않습니다. 현재 수천만 수준의 동시 트래픽 환경에서 동시 압력 테스트, 성능 병목 진단, 최적화 솔루션 및 아키텍처 진화를 이해하면 높은 급여, 음성, 감각을 얻을 수 있다고 해도 과언이 아닙니다. 성취감과 대체불가성을 동시에..

성능 최적화는 비즈니스 시나리오에 따라 과학적인 작업 방법과 결합되어야 하며 합리적인 최적화는 생산 효율성을 크게 향상시킬 수 있습니다. 오늘날 고성능 튜닝을 이해한다는 것은 회사의 비즈니스에 직접적으로 힘을 실어줄 수 있다는 것을 의미합니다.

그러나 많은 사람들이 튜닝을 배우는 과정에서 다음과 같은 오해에 직면했습니다.

  • 인터넷에서 튜닝 관련 지식 포인트를 본 적은 있지만 한 번도 실행해 본 적이 없어서 읽다가 잊어버렸습니다.

  • 작업할 때 redis, kafka 등을 모두 직접 호출하는데 문제가 있으면 헤매게 됩니다.

  • 튜닝은 매개변수를 조정하는 것일 뿐이고, 코드를 최적화하는 데 초점이 맞춰져 있다고 생각했습니다.

  • 면접관이 튜닝 경험에 대해 물었지만 실제로 해본 적은 없다.

  • 높은 동시성 생산 문제가 발생하면 기계와 구성이 추가되지만 좋은 해결책은 없습니다.

이러한 문제가 명확하지 않으면 매일 늦게까지 야근을 하고 CRUD를 반복할 가능성이 높습니다. 반대로 높은 동시성 성능을 최적화할 줄 알면 실제 프로덕션 환경에서 소방대장이 될 수 있고, 수천만 규모 프로젝트의 병목 문제를 한 사람이 해결하고 얻을 수 있는 성장감 급여보다 훨씬 클 수 있습니다. 귀하의 만족.

따라서 직장에서 더 멀리, 더 넓게 나아가고 싶다면 높은 동시성 튜닝을 철저히 이해하는 것은 확실히 탁월한 선택입니다.

이제 인터뷰를 위해 인터넷 회사에 가면 면접관은 매번 온라인 시스템 시나리오 질문을 많이 던질 것입니다.

  • 온라인 시스템의 CPU, IO 및 메모리가 갑자기 꽉 차서 인터페이스 응답 시간이 너무 깁니다.

  • 온라인 시스템에서 느린 SQL 실행으로 인해 시스템 인터페이스가 시간 초과됨

  • 온라인 데이터베이스 Mysql의 높은 동시성으로 인한 교착 상태

  • 온라인 데이터베이스 Mysql이 설명할 수 없을 정도로 흔들려서 찾을 수 없습니다.

  • 온라인 시스템이 갑자기 멈추고 액세스할 수 없으며 자주 GC 알람을 수신합니다.

  • 온라인 시스템이 갑자기 OOM 메모리를 오버플로하고 메모리 누수를 찾을 수 없습니다.

  • 온라인 프로덕션 환경은 JVM의 다양한 매개 변수를 설정하는 방법을 모릅니다.

  • 초고속 동시 시스템의 성능을 최적화하는 방법을 모르겠습니다.

그것을 읽은 후 얼마나 많은 장면 문제를 해결할 수 있습니까?

대부분의 사람들은 이러한 성능 문제에 직면했을 때 항상 혼란스러워하며 많은 학생들이 블로그를 검색하거나 온라인으로 책을 읽으려고 노력하지만 적절한 해결책을 찾기가 거의 어렵습니다.

물론 일부 학생들은 소규모 시스템을 가지고 있고 비슷한 문제를 겪지 않았지만 취업 면접에서 비슷한 실용적인 질문을 받으면 손을 뻗을 수밖에 없습니다. .

사실 Java 성능 튜닝은 프로그래밍 언어가 아니며 직선적 사고를 통해 마스터하고 적용할 수 없습니다. 못 배워서가 아니라 근본적인 원리를 파악하지 못하고 실전과 경험이 부족한 것!

연구 노트

Ant Financial 내부의 "JVM 및 성능 튜닝" 연구 노트를 추천합니다. 총 5개의 파트가 있으며 PDF 문서로 구성되어 있습니다.

공식 계정에 주목하세요: 바람을 쫓는 프로그래머, 위의 정보를 얻기 위해 [0206]에 답장

### 1. JVM 메모리 영역 분할

1. 프로그램 카운터(스레드 전용)

2. Java 스택(스레드 비공개)

3. 로컬 메서드 스택(스레드 비공개)

4. 힙(스레드 공유)

5. 메소드 영역(스레드 공유)

6. 다이렉트 메모리(스레드 공유)

###2. JVM 실행 서브시스템

1. 클래스 클래스 파일 구조

1.1 Java 크로스 플랫폼 기반

1.2 Class 클래스의 특성

2. 바이트코드 명령어

2.1 로드 및 저장 지침

2.2 연산 또는 산술 명령어

2.3 유형 변환 명령어

2.4 클래스 인스턴스 생성 지침

2.5 배열 생성 지침

2.6 액세스 필드 지침

2.7 어레이 액세스 관련 명령어

2.8 클래스 인스턴스 유형 확인 방법

2.9 피연산자 스택 관리 명령어

2.10 제어 전송 지침

2.11 메소드 호출 명령어

2.12 메서드 반환 지침

2.13 예외 처리 지침

2.14 동기 명령

3. 클래스 로딩 메커니즘

4. 클래스 로더

4.1 시스템 클래스 로더

4.2 부모 위임 모델

5. Tomcat 클래스 로딩 메커니즘.

6. 메서드 호출 세부 정보

6.1 분석

6.2 정적 디스패치

6.3 동적 파견

6.4 스택 기반 바이트코드 해석 및 실행 엔진

###3. 가비지 컬렉터 및 메모리 할당 전략

1. Java에서 값 전달 또는 참조 전달이 있습니까?

2. 참조 유형

3. 기본 가비지 수집 알고리즘

3.1 기본 재활용 전략에 따라

3.2 칸막이 처리 방법에 따라

3.3 시스템 스레드별

4. 세대별 쓰레기 배출

5. JAVA에서 Garbage Collection GC의 종류

###4. 효율적이고 세련된 Java 프로그램 작성

1. 객체지향

1.1 생성자 매개변수가 너무 많으면 어떻게 해야 하나요?

1.2 인스턴스화할 필요가 없는 클래스에는 전용 생성자가 있어야 합니다.

1.3 불필요한 개체를 만들지 마십시오.

1.4 종료자를 피하십시오.

1.5 클래스 및 멤버 접근성 최소화

1.6 변동성 최소화

1.7 상속에 대한 구성

1.8 추상 클래스보다 인터페이스가 낫다

2. 방법

2.1 가변 매개변수는 주의해서 사용해야 합니다.

2.2 길이가 0인 배열 또는 컬렉션을 반환하고 null을 반환하지 않음

2.3 표준 예외 선호

3. 일반 프로그래밍

나

### 다섯, 성능 최적화

1. 일반적으로 사용되는 성능 평가/테스트 지표

1.1 응답 시간

1.2 동시성

1.3 처리량

1.4 관계

2. 일반적인 성능 최적화 방법

2.1 조기 최적화 방지

2.2 시스템 성능 테스트 실시

2.3 시스템 병목 현상을 찾아 분할 및 정복하고 점진적으로 최적화

2.4 프런트 엔드 최적화의 일반적인 수단

3 애플리케이션 서비스 성능 최적화

3.1 캐싱

3.1.1 캐싱의 기본 원리와 본질

3.1.2 버퍼의 적절한 사용을 위한 지침

3.1.3 분산 캐시 및 일관된 해싱

3.2 비동기

3.2.1 동기 및 비동기, 차단 및 비차단

3.2.2 일반적인 비동기 수단

3.3 클러스터

3.4 애플리케이션 관련

3.4.1 코드 수준

3.4.2 동시 프로그래밍

3.4.3 자원의 재사용

3.4.4 JVM

3.4.5 GC 튜닝.

3.4.6 실제 튜닝

3.4.7 스토리지 성능 최적화

JVM 및 성능 튜닝에 대한 지식 포인트는 모두를 위해 마인드 맵을 요약하고 분석합니다.

몇 가지 일반적인 JVM 및 튜닝 인터뷰 질문

1. JVM 메모리 영역에 대해 이야기하기

2. 자바 프로그램이 사용하는 메모리는 어떻게 구하나요? 힙 사용량의 %?

3. Java에서 힙과 스택의 차이점은 무엇입니까?

4. JVM이 클래스 파일을 로딩하는 원리 메커니즘 설명

5. GC란? GC가 있는 이유는 무엇입니까?

6. FullGC는 언제 트리거됩니까?

7. Java의 객체 구조에 대해 간략히 설명하십시오.

8. 재활용 가능 여부를 판단하는 방법

9. JVM의 영구 생성 시 가비지 수집이 발생합니까?

10. 가비지 수집 알고리즘

11. 튜닝 명령은 무엇입니까?

12. 튜닝 도구

13. Minor GC와 Full GC는 각각 언제 발생합니까?

14. 알고 있는 JVM 성능 튜닝은 무엇입니까?

15. GC 실행을 보장할 수 있습니까?

이러한 일반적인 JVM 및 성능 조정 인터뷰 질문에 대한 답변은 PDF 문서로 정리되어 있습니다.

문서 + JVM 및 성능 튜닝 인터뷰 질문 요약 + JVM 및 성능 튜닝 마인드 맵에 언급된 JVM 및 성능 튜닝 연구 노트를 공유할 수 있습니다.

공식 계정에 주목하세요: 바람을 쫓는 프로그래머, 위의 정보를 얻기 위해 [0206]에 답장

요약하다

성능 튜닝 방법을 비즈니스에 적용하려면 이론이 매우 중요하며 이론을 비즈니스 시나리오에 적용할 수 있는 것이 더 중요하며 실제 시나리오와 데이터를 가지고 연습하고 피드백하는 것이 더 중요합니다. 우수한 성능 튜닝 솔루션은 하룻밤 사이에 달성되지 않습니다. 로그 분석에서 병목 현상 찾기에 이르기까지 구체적인 이론적 분석과 실제 작업이 필요합니다.

Supongo que te gusta

Origin blog.csdn.net/Design407/article/details/110953891
Recomendado
Clasificación