상단

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

 
 

 

기타 모니터링

 
 

 

튜닝 가이드


  • 사용자 인터페이스

    • 사용자수, 사용시간

    • 문진

     
  • 자바 애플리케이션

    • 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

이전글 :
다음글 :