중구난방으로 정리한 지난 스터디 메모장..

------------------

jps

jstats

자바옵션으로 줄 수 있는 verbosegc

http://www.javaspecialists.eu/archive/Issue191.html

verbosegc로 찍은 로그 분석기, hp jmeter

jProfiler 추천함

String 처리가 성능에 미치는 영향 -> StringBuffer, StringBuilder

로깅이 성능에 미치는 영향 -> SLF4J

워크로그는 응답 처리 다 끝난 다음에 찍힌다.

웹 로그 분석 툴

Serial Collector는 주로 클라이언트 애플리케이션에서 사용.

G1은 JDK7에서 지원. JDK6에서도 early access로 사용 가능.

Serial Collector: mark-sweep-compact

Parallel Collector: young 영역을 paraller하게, old 영역은 mark-sweep-compact

Parallel Compacting: old 영역을 mark-summary-compaction

Concurrent Mark Sweep: old 영역을 CMS 사용. CPU 많이 먹음. 그리고 특정 조건에서 컴팩션이 발생하는데... 그게 m-s-c보다 더 오래 걸린다.

G1은 copy 방식이 아니라 move 방식이라 훨씬 빠르다.

GC 튜닝 방법

- 메모리 크기 선택

어떻게? 여러 서버에 각기 다른 메모리 크기 할당한 뒤, full GC 수행 시간과 빈도 측정.

- GC 방식 선택

- GC 옵션 선택

- VM 타입, Heap 크기, Young 크기와 비율(-XX:NewRatio 2나 3 해보자), Perm 크기, 쓰레드 크기(-Xss)

부하 생성: Grinder, JMeter

BTrace: 동적 모니터링 툴

http://kenai.com/projects/btrace/downloads/directory/releases/release-1.2

btrace pid 스크립트_이름

com.sun.tools.attach.VirtualMachine

http://www.j6a.ru/classcom_1_1sun_1_1tools_1_1attach_1_1_virtual_machine.html

Instrument

ASM

http://toby.epril.com/?p=828

프로파일링 툴은 운영서버에서만 사용해야 한다. 그런데 BTrace는 특정 몇몇 클래스에만 적용해 볼 수 있다.

kill -3 스레드덤프