- Turning
- OS Patch
- Network 튜닝
- MySQL
- Apache HTTP Server
- PHP
- WordPress 튜닝
- Windows System 튜닝
- JVM Tuning
- $S1WS_HOME/config/jvm12.conf
- $JAVA_HOME/bin/java
- $S1WS_HOME/https-admserv/start-jvm
- Sun ONE Web Server 6.0 Tuning
- Sun ONE Directory Server 5.1 Tuning
- Sun ONE Portal Server 6.0 Secure Remote Access Tuning
- Monitoring
- 유용한 명령어
- 통합 모니터링
- CPU 모니터링
- Memory 모니터링
- Disk 모니터링
- Network 모니터링
- 기타 모니터링
- 튜닝 가이드
- 참고 문헌
Turning
모니터링(monitoring), 튜닝(Turning), 성능(Performance)에 대한 사항을 정리 한다.
OS Patch
uname -v
uname -a
/etc/system
set tcp:tcp_conn_hash_size=8192
set rlim_fd_max=16384
set rlim_fd_cur=16384
set sq_max_size=0
set tcp:tcp_conn_hash_size=4096
set rlim_fd_max=4096
set rlim_fd_cur=4096
set sq_max_size=0
set maxusers=2048
set ncsize=300000
set ufs_ninode=300000
Network 튜닝
/etc/rc2.d/S69inet, S99ndd_tcp
/usr/sbin/ndd -set /dev/tcp tcp_close_wait_interval 15,000
/usr/sbin/ndd -set /dev/tcp tcp_conn_hash_size 8,192
/usr/sbin/ndd -set /dev/tcp tcp_conn_req_max_q 1,024
/usr/sbin/ndd -set /dev/tcp tcp_conn_req_max_q0 1,024
/usr/sbin/ndd -set /dev/tcp tcp_deferred_ack_interval 5
/usr/sbin/ndd -set /dev/tcp tcp_fin_wait_2_flush_interval 60,000
/usr/sbin/ndd -set /dev/tcp tcp_ip_abort_cinterval 10,000
/usr/sbin/ndd -set /dev/tcp tcp_ip_abort_interval 60,000
/usr/sbin/ndd -set /dev/tcp tcp_keepalive_interval 30,000
/usr/sbin/ndd -set /dev/tcp tcp_recv_hiwat 32,768
/usr/sbin/ndd -set /dev/tcp tcp_rexmit_interval_initial 500
/usr/sbin/ndd -set /dev/tcp tcp_rexmit_interval_max 3,000
/usr/sbin/ndd -set /dev/tcp tcp_rexmit_interval_min 500
/usr/sbin/ndd -set /dev/tcp tcp_slow_start_initial 2
/usr/sbin/ndd -set /dev/tcp tcp_smallest_anon_port 8,192
/usr/sbin/ndd -set /dev/tcp tcp_strong_iss 2
/usr/sbin/ndd -set /dev/tcp tcp_time_wait_interval 30,000
/usr/sbin/ndd -set /dev/tcp tcp_xmit_hiwat 32,768
MySQL
mysql -uroot -p mysql
show table status from daoutest;
show variables like 'query_cache%';
set global query_cache_type = 'ON';
set global query_cache_size = 32000000;
mysqladmin -uroot -p extended-status
vi /etc/my.cnf
key_buffer_size+(record_buffer+sort_buffer)*max_connections < 실메모리양
table_cache : (MaxFileOpen-MaxConnecrion-(temporary table에 사용되는 파일핸들)) /2
mysqladmin -uroot -p variables
[mysqld](mysqld.md)
key_buffer = 256M
max_allowed_packet = 4M
table_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
myisam_sort_buffer_size = 64M
thread_cache = 8
thread_stack = 126976
max_connections = 200
join_buffer_size = 1M
max_connect_errors = 1024
wait_timeout = 30
read_rnd_buffer_size = 8M
thread_cache_size = 8
query_cache_type = 1
query_cache_size = 512M
query_cache_limit = 16M
Apache HTTP Server
vi /etc/httpd/conf/httpd.conf
MinSpareServers 5
MaxSpareServers 20 // 10
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000 // 10000
KeepAlive Off // On
MaxKeepAliveRequests 100 // 5
KeepAliveTimeout 15 // 5
Timeout 120 // 300
vi /etc/httpd/conf/httpd.conf
StartServers 8
MinSpareServers 5
MaxSpareServers 10
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 10000
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
PHP
yum install php-pecl-apc
또는 pecl install apc
WordPress 튜닝
참고 문헌
Windows System 튜닝
프로그램 설치시 관리자로 로그인하여 설치할 것
불필요한 임시 파일 제거
시작 -> 프로그램 -> 보조프로그램 -> 시스템 도구 -> 디스크 정리
디스크 검사
내 컴퓨터 -> c: -> 등록정보 -> 도구 -> 지금 검사 -> 시작
디스크 조각 모음
시작 -> 프로그램 -> 보조프로그램 -> 시스템 도구 -> 디스크 조각 모음
영구적인 스왑 파일 작성 : 물리적 메모리의 1.5배 권장
시작 -> 설정 -> 제어판 -> 시스템 -> 고급 -> 성능 옵션 -> 변경
불필요한 서비스 중지
시작 -> 설정 -> 제어판 -> 관리 도구 -> 서비스
Windows 2000, XP
불필요한 서비스
Clipbook Service
Computer Browser Service
Internet Connection Sharing Service
Indexing Service
Infared Monitor Service
NetMeeting Remote Desktop Sharing Service
Remote Registry Service
Routing and Remote Access Service
Server Service
Simple TCP/IP Service
SMTP Service
FTP Publishing Service
Telnet Service
Task Scheduler Service
Terminal Service
Windows Media Services
- 최소한의 서비스
Logical Logging Manager
Network Connections
NTLM Security Support Provider
Plug and Play
Server
Workstation
Removeable Strage
Security Accounts Manager
Windows Management Instrumentation
Windows Management Instrumentation driver extensions
WMDM PMSP Service
Application Management
Windows NT 4.0
불필요한 서비스
Alerter
ClipBook Server
Computer Browser
DHCP Client
Messenger
NetBIOS Interface
NetLogon
Network DDE & Network DDE DSDM
Scheduler
Server Service
Simple TCP/IP Services
Spooler
TCP/IP NetBIOS Helper
WINS Client (TCP/IP)
Workstation Service
- 최소한의 서비스
Event Log
License Logging Service
Windows NTLM Security Support Provider
Remote Procedure Call (RPC) Service
Windows NT Server or Windows NT Workstation
IIS Admin Service
MSDTC
World Wide Web Publishing Service
Protected Storage
백그라운드 응용 프로그램 종료
작업 관리자 -> 응용 프로그램 : 불필요한 응용프로그램을 종료한다.
JVM Tuning
$S1WS_HOME/config/jvm12.conf
jvm.minHeapSize=268435456 (327680000, 1073741824)
jvm.maxHeapSize=268435456 (1310720000, 1073741824)
- 128M, 256M, 512M, 768M, 1024M : 134217728, 268435456, 536870912, 805306368, 1073741824
jvm.option=-XX:MaxNewSize=256M
jvm.option=-XX:NewSize=256M
jvm.option=-Xrs
jvm.option=-server
jvm.option=-XX:MaxPermSize=128M
jvm.option=-XX:PermSize=128M
jvm.option=-XX:+OverrideDefaultLibthread
$JAVA_HOME/bin/java
-server
-Xms512M
-Xmx512M
-Xrs
-XX:+OverrideDefaultLibthread
-XX:ThreadStackSize=128
-XX:MaxPermSize=128M
-XX:PermSize=128M
-XX:MaxNewSize=256M
-XX:NewSize=256M
-classpath ${CLASSPATH} $DEFINES $PROXY_DEFINES $INSTANCE_DEFINES
com.sun.portal.netlet.eproxy.EProxy"
$S1WS_HOME/https-admserv/start-jvm
NSES_JRE_RUNTIME_LIBPATH의 맨앞에 /usr/lib/lwp 추가
Sun ONE Web Server 6.0 Tuning
$S1WS_HOME/config/magnus.conf
RqThrottle 128 (512)
MaxProcs 1
KeepAliveTimeout 3 (0 ~ 5)
KeepAliveQueryMeanTime 10
UseNativePoll 1
MaxKeepAliveConnections 32000 (131072)
StackSize 262144
ConnQueueSize 10000 (4096)
ThreadIncrement 20
ListenQ 4096
$S1WS_HOME/config/server.xml
acceptorthreads = cpu 갯수
$S1WS_HOME/config/contexts.properties
context.global.sessionmgr.initArgs=maxSessions=2000,timeOut=1200
$S1WS_HOME/config/web-apps.xml
Sun ONE Directory Server 5.1 Tuning
slapd-daoutech/config/dse.ldif
nsslapd-allidsthreshold 50,000
nsslapd-threadnumber 60
nsslapd-db-home-directory
nsslapd-db-logdirectory
nsslapd-import-cachesize 2,000,000 권장값 : 3.5 * Ldif_File_Size
nsslapd-dbcachesize 800,000 권장값 : 1.2 * All_db3_File_Size
nsslapd-cachememsize 1,600,000 권장값 : 3 * id2entry.db3_File_Size
메모리 튜닝
Sun ONE Portal Server 6.0 Secure Remote Access Tuning
noaccess로 구동되는 Gateway를 root로 변경
$S1PS_HOME/SUNWam/lib/AMConfig.properties
com.iplanet.am.session.maxSessions=5000 (50000)
com.iplanet.services.debug.level=error (message)
com.iplanet.am.logstatus=ACTIVE (INACTIVE)
Monitoring
유용한 명령어
1초에 한번씩 명령어를 실행하고 결과를 조회
watch -n 1 ~
Nice 순위 (-20 ~ 19)를 지정하여 프로그램 실행
nice -15 ~
통합 모니터링
yum install dstat
dstat -t -c -m -g -d -n -y --output dstat.out 1 10
CPU 모니터링
vi /proc/stat
vi /proc/${pid}/stat
top
top -b -d 1
Cpu(s)
us. 사용자, sy. 시스템, ni. Nice, id. Idel
wa. ?, hi. ?, si. ?, st. ?
Mem : 전체, 사용, free, 버퍼
Swap : 전체, 사용, free, 캐쉬
PID : 프로세스 ID
USER : 사용자
PR : Process의 우선 순위
NI : Nice 값
VIRT : 가상 메모리 사용량
RES : 메모리 상주 크기
SHR : 분할된 페이지/프로세스에서 사용하는 메모리
S : 프로세스 상태 (Sleep, Run, sWapped, Zombies)
%CPU : CPU 사용율
%MEM : 메모리 사용율
TIME+ : CPU TIME
COMMAND : 실행된 명령어
sar
pstree : Process이 트리 구조
pmap : Process map
ps
-a : 모든 프로세스
-e : 실행중인 모든 프로세스
-f : Full list
l : Long list
-m : 메모리 정보
-t : TTY
-u : 사용자
-p : Process ID
-u : User ID
-g : Group ID
-x : TTY 없는 프로세스도 표시
Process ID별 시작 이후 CPU, Memory 사용량 모니터링
ps -o %cpu,%mem -p ${pid}
ps -e -o %cpu,%mem,pid | grep ${pid}
ps -e -o %cpu,%mem,uid,pid,ppid,time
top -d 1 -p 16580,17375 : 프로세스 아이디에 대해서 1초 마다 정보 표시
Memory 모니터링
free, free -m
Mem. 메모리, buffers/cache. 버퍼/캐쉬, Swap. 스왑
total : 전체 메모리 (KB)
used : 사용 메모리
free : Free 메모리
shared : 공유 메모리
buffers : 버퍼 메모리
cached : 캐쉬 메모리
vmstat
vmstat 5 10 : 5초 간격으로 10회 조회
procs
r : 현재 실행 중인 Process 수
w : sleep 상태의 Process 수
memory
swpd : 가상 메모리
free : 사용 가능한 메모리
buff : Buffer 메모리
cache : Cache 메모리
swap
si : Swap In (디스크에서 메모리로 swap된 메모리)
so : Swap Oout (메모리에서 디스크로 swap된 메모리)
io
bi : 초당 블록 디바이스로 보내는 블럭 수
bo : 초당 블록 디바이스에서 가져오는 블럭 수
system
in : 초당 인터럽티드 되는 수
cs : 초당 Context Switch 되는 수
cpu
us : 사용자의 CPU 사용율
sy : System의 CPU 사용율
id : Idel CPU 사용율
wa : 입출력 대기 CPU 사용율
cat /proc/meminfo
Disk 모니터링
iostat
iostat -k -d 3
avg-cpu : 부팅 이후 평균 CPU 사용량
%user : 사용자
%nice : nice 프로세스
%system : system
%iowait : Disk I/O 동안 CPU 대기 시간
%steal : 가상 CPU 서비스 동안 대기한 시간
%idle : 대기 시간
Device : 장치
tps : 초당 입출력 수
Blk_read/s : 초당 읽은 Block 수 (Block. 512 bytes)
Blk_wrtn/s : 초당 저장 Block 수
Blk_read : 지금까지 읽은 Block 수
Blk_wrtn : 지금까지 저장한 Block 수
iotop
df -k, du -k
lsof
Network 모니터링
netstat
tcpdump
기타 모니터링
Application monitoring
wget
Mysql Replication monitoring
참고 문헌
튜닝 가이드
사용자 인터페이스
사용자수, 사용시간
문진
자바 애플리케이션
Open-Close, 반복문
어플리케이션 호출 빈도, 리소스 사용 범위
가장 늦은 어플리케이션, 메쏘드
성능 분석 방안
실행시간측정
long start = System.currentTimeMillis();
long end = System.currentTimeMillis() - start;
- 메쏘드 호출 분석
-Xrunhprof:file=output.txt, cpu=samples, thread=y
- 가비지 컬렉션 측정
-verbosegc, System.gc(), MethodTest
- 메모리 사용 분석
Runtime.freeMemory(), totalMemory()
javac -o, java -Xmx1024
자바 가상머신
실행 60%, GC 20%, 쓰레드 동기화 19%, 데이티브 메서드 1%
힙 메모리 : Free Memory, Total Memory
애플리케이션 서버
어플리케이션 서버 리소스, DB 리소스, 웹서버 리소스 ==> 다운시 로그
운영체계
운영체계 성능 및 리소스
지원 소프트웨어 설치, 설치 계정, 디렉토리 권한
하드웨어 플랫폼
CPU, 메모리, 디스크, 네트워크 등
성능향상을 위한 프로그램 방안
변수 : static, 작은 크기(타입)
루프 : 선언을 밖에, 배열 길이 check는 밖에
메소드 호출 : static
연산자 : shift > 곱하기/나누기, A = A + B > A += B
기타 : 객체 생성시 일반 연산의 10배, 예외처리는 느림
반복을 줄여라 : 공통 코드, 루프(루프내, 조건)
인라인 : javac -o, static, private, final 선언 메쏘드
IO 최적화 : FileInputStream --> BufferedInputStream
인스턴스 변수의 중복 초기화를 피하라.
static 메쏘드 사용
불필요한 객체 생성 감소
Date a, a = new Date(), a = null
객체 재사용
Object Pooling
String < StringBuffer
케스팅 자제
참고 문헌
분류: Monitoring
Cloud
최종 수정일: 2024-09-30 12:26:19
이전글 :
다음글 :