새소식

Operation System/Unix & Linux

sar 유틸리티를 통해 데이터베이스 서버 모니터링 해보기

  • -
728x90
반응형

sar 유틸리티를 통해 데이터베이스 모니터링을 해보겠습니다.


모니터링 구간

데이터베이스를 모니터링 하고자 할 때 4개 구간으로 모니터링 할 수 있습니다.

  • receive/transmit : 클라이언트와 데이터베이스간 데이터를 주고 받는 구간
  • letch : 데이터베이스 프로세스에서 디스크에 있는 데이터를 메모리에 얹고 메모리에서 가져오는 구간
  • lookup: 데이터베이스 프로세스가 메모리에 없는 데이터를 디스크에서 읽어 메모리에 얹는 구간
  • calculation : 데이터베이스 프로세스가 메모리에 올라간 데이터를 가공하는 구간

receive/transmit

  • 클라이언트와 데이터베이스간 데이터를 주고 받는 구간
  • receive/transmit 구간이 느려지는 상황
    • 대용량 데이터를 클라이언트 프로그램에서 조회해야하는 경우
    • 클라이언트 프로그램에서 많은 트랜잭션을 처리하는 경우
    • 네트워크가 느린 경우
    • connection pooling을 안할 경우
sar -n DEV 
[root@d86a1cc708f1 ~]# sar -n DEV 1
Linux 5.15.0-48-generic (d86a1cc708f1) 	12/08/22 	_x86_64_	(12 CPU)

08:06:36        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
08:06:37           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
08:06:37         eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
  • FACE : ifconfig -a를 통해 이더넷 확인
  • rxpckk/s : 초당 송신한 패킷 수
  • txpck/s : 초당 수신한 패킷 수
  • rxkB/s : 초당 송신한 크기 (KB)
  • txkB/s : 초당 수신한 크기 (KB)

letch

  • 데이터 베이스 프로세스가 메모리에 접근하여 데이터를 주고 받는 구간
  • letch 구간이 느려지는 상황
    • 동일한 메모리 블럭을 처리하는 많은 양의 Operation이 수행되는 경우
    • 버퍼 체이닝 발생으로 인해 letch 단계가 lookup 단계까지 진행 되는 경우
    • 메모리가 아닌 스왑 영역에서 letch하는 경우
sar -b 
[root@junsu-desktop block]docker_host# sar -b 1
Linux 5.15.0-48-generic (junsu-desktop) 	12/08/22 	_x86_64_	(12 CPU)

17:11:30          tps      rtps      wtps      dtps   bread/s   bwrtn/s   bdscd/s
17:11:31        13.00      0.00     13.00      0.00      0.00    376.00      0.00
17:11:32        60.00      8.00     52.00      0.00    256.00   1000.00      0.00
17:11:33        22.00      0.00     22.00      0.00      0.00    432.00      0.00
17:11:34        64.00      0.00     64.00      0.00      0.00   1224.00      0.00
17:11:35        10.00      0.00     10.00      0.00      0.00    160.00      0.00
  • bread/s : 초당 읽어들이는 블럭수
  • bwrtn/s : 초당 쓰여진 블럭 수
  • OS blocksize 확인 (데이터베이스 블럭 사이즈랑 다름)
    • cat /etc/mke2fs.conf |grep blocksize
sar -W 
[root@junsu-desktop block]docker_host# sar -W 1
Linux 5.15.0-48-generic (junsu-desktop) 	12/08/22 	_x86_64_	(12 CPU)

17:22:38     pswpin/s pswpout/s
17:22:39         0.00      0.00
17:22:40         0.00      0.00
17:22:41         0.00      0.00
  • pswpin/s : 초당 swap in 횟수 (페이지)
  • pswpout/s : 초당 swap out 횟수 (페이지)

lookup

  • 데이터베이스의 요청을 받아 물리적인 디스크에 접근하여 데이터를 메모리에 올리는 작업
  • lookup 단계가 느려지는 상황
    • 빈번한 테이블 풀 스캔
    • 버퍼 체이닝 발생
    • 메모리 가용을 하지 못해 스왑 영역을 쓰는 경우
  • 대표적인 lookup 행위
    • SQL 오퍼레이션 처리 하는 과정 중 페이지 또는 블럭을 스캔하는 과정
sar -d
[root@junsu-desktop dev]docker_host# sar -d 1 
Linux 5.15.0-48-generic (junsu-desktop) 	12/08/22 	_x86_64_	(12 CPU)

17:09:06          DEV       tps     rkB/s     wkB/s     dkB/s   areq-sz    aqu-sz     await     %util
17:09:07       dev7-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
17:09:07       dev7-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
17:09:07       dev7-2      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
17:09:07       dev7-3      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
17:09:07       dev7-4      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
17:09:07       dev7-5      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
17:09:07       dev7-6      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
17:09:07       dev7-7      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
17:09:07       dev8-0      4.00      0.00     32.00      0.00      8.00      0.01      1.00      0.40
17:09:07      dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
17:09:07      dev8-16      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
17:09:07      dev8-32      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
17:09:07       dev7-9      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
17:09:07       dev7-8      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
17:09:07      dev7-13      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
17:09:07      dev7-10      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
17:09:07      dev7-12      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
17:09:07      dev7-11      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
17:09:07      dev7-15      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
17:09:07      dev7-18      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
17:09:07      dev7-17      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
17:09:07      dev7-14      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
17:09:07      dev7-16      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
17:09:07      dev7-19      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
17:09:07      dev7-20      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
  • DEV : 디바이스 맵핑 정보
  • rkB/s : 초당 read된 크기(KB)
  • wrB/s : 초당 write 된 크기 (KB)

디스크 정보 확인 하기

[root@junsu-desktop block]docker_host# ls -rlt /dev/block
total 0
lrwxrwxrwx 1 root root 6 Oct  2 00:36 8:16 -> ../sdb
lrwxrwxrwx 1 root root 6 Oct  2 00:36 8:32 -> ../sdc
lrwxrwxrwx 1 root root 6 Oct  2 00:36 8:0 -> ../sda
lrwxrwxrwx 1 root root 7 Oct  2 00:36 8:33 -> ../sdc1
lrwxrwxrwx 1 root root 7 Oct  2 00:36 8:18 -> ../sdb2
lrwxrwxrwx 1 root root 7 Oct  2 00:36 8:21 -> ../sdb5
lrwxrwxrwx 1 root root 7 Oct  2 00:36 8:17 -> ../sdb1

[root@junsu-desktop ~]docker_host# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb5       117G   37G   74G  34% /
/dev/sda        916G  506G  364G  59% /dodo
/dev/sdb1       511M  4.0K  511M   1% /boot/efi
/dev/sdc1       932G  694G  238G  75% /das2

[root@junsu-desktop ~]docker_host# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 931.5G  0 disk /dodo
sdb      8:16   0 119.2G  0 disk 
├─sdb1   8:17   0   512M  0 part /boot/efi
├─sdb2   8:18   0     1K  0 part 
└─sdb5   8:21   0 118.8G  0 part /
sdc      8:32   0 931.5G  0 disk 
└─sdc1   8:33   0 931.5G  0 part /das2

calculation

  • 메모리에서 처리가 된 데이터를 가지고 연산 작업을 수행 합니다.
  • calculation 구간이 느려지는 상황
    • 많은 양의 데이터를 연산 또는 함수 처리하는 경우
    • 프로세스 fork가 빈번한 경우
  • 대표적인 calculation 행위
    • 연산자 사용
    • 함수 사용
sar -C
[root@d86a1cc708f1 ~]# sar -C 1
Linux 5.15.0-48-generic (d86a1cc708f1) 	12/08/22 	_x86_64_	(12 CPU)

07:56:22        CPU     %user     %nice   %system   %iowait    %steal     %idle
07:56:23        all      0.76      0.00      0.93      0.08      0.00     98.22
07:56:24        all      0.51      0.00      0.76      0.51      0.00     98.22
07:56:25        all      0.42      0.00      0.42      0.00      0.00     99.15
07:56:26        all      0.42      0.00      0.93      0.25      0.00     98.39
  • %user : 사용자 레벨 CPU 사용량
  • %system : 시스템 레벨 CPU 사용량
  • %iowait : CPU 사용을 위해 할당은 됬지만 lookup 단계로 인해 대기 중인 CPU 사용량
  • %idle : 놀고 있는 CPU 사용량
sar -q 
[root@d86a1cc708f1 ~]# sar -q 1
Linux 5.15.0-48-generic (d86a1cc708f1) 	12/08/22 	_x86_64_	(12 CPU)

07:56:28      runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
07:56:29            0      2266      0.09      0.32      0.37         0
07:56:30            1      2266      0.09      0.32      0.37         0
07:56:31            0      2267      0.09      0.32      0.37         0
07:56:32            0      2267      0.09      0.32      0.37         0
07:56:33            0      2268      0.08      0.31      0.37         0
07:56:34            0      2268      0.08      0.31      0.37         0
  • runq-sz : CPU 사용을 위해 대기 중인 스레드 개수
  • ldavg-1 : 1분 전 할당 된 core가 일하고 있는 개수
  • ldavg-5 : 5분 전 할당 된 core가 일하고 있는 개수
  • ldavg-15 : 15분 전 할당 된 core가 일하고 있는 개수

모니터링을 진행하기 전 정상 상황의 모니터링 정보가 있어야 현재 시스템 사용률이 높다 낮다 판단을 할 수 있습니다.
sar -f 옵션을 통해 정상 상황의 지표를 확보하고 모니터링을 진행 합니다.

[root@TAC2 sa]# ls -lrt /var/log/sa/ |grep sa
-rw-r--r--. 1 root root 399340 11월  8 23:53 sar08
-rw-r--r--. 1 root root 475232 11월  9 23:50 sa09
-rw-r--r--. 1 root root 399340 11월  9 23:53 sar09
-rw-r--r--. 1 root root 475232 11월 10 23:50 sa10
-rw-r--r--. 1 root root 399340 11월 10 23:53 sar10
-rw-r--r--. 1 root root 178592 11월 11 08:50 sa11
-rw-r--r--. 1 root root 214896 11월 22 23:50 sa22
-rw-r--r--. 1 root root 180961 11월 22 23:53 sar22
-rw-r--r--. 1 root root 475232 11월 23 23:50 sa23
-rw-r--r--. 1 root root 399340 11월 23 23:53 sar23
-rw-r--r--. 1 root root 188480 11월 24 09:20 sa24
-rw-r--r--. 1 root root 125904 12월  6 23:50 sa06
-rw-r--r--. 1 root root 106403 12월  6 23:53 sar06
-rw-r--r--. 1 root root 323616 12월  7 16:10 sa07
-rw-r--r--. 1 root root   7248 12월  8 17:30 sa08

[root@TAC2 sa]# sar -f sa06
Linux 3.10.0-1160.76.1.el7.x86_64 (TAC2) 	2022년 12월 06일 	_x86_64_	(4 CPU)

17시 31분 24초       LINUX RESTART

17시 40분 01초     CPU     %user     %nice   %system   %iowait    %steal     %idle
17시 50분 01초     all      0.24      0.00      0.23      0.00      0.00     99.54
18시 00분 01초     all      0.27      0.00      0.25      0.00      0.00     99.48
18시 10분 01초     all      0.22      0.00      0.22      0.00      0.00     99.56
...

[root@TAC2 sa]# sar -f sa07
Linux 3.10.0-1160.76.1.el7.x86_64 (TAC2) 	2022년 12월 07일 	_x86_64_	(4 CPU)

00시 00분 01초     CPU     %user     %nice   %system   %iowait    %steal     %idle
00시 10분 01초     all      0.28      0.00      0.21      0.00      0.00     99.51
00시 20분 01초     all      0.18      0.00      0.17      0.00      0.00     99.65
00시 30분 01초     all      0.21      0.00      0.19      0.00      0.00     99.60
00시 40분 01초     all      0.18      0.00      0.17      0.00      0.00     99.65
...

 

sar: command not found

sar 유틸리티 설치 sar CentOS yum install -y sysstat Ubuntu TEST 패키지 매니저로 설치가 불가능한 경우 아래 링크를 통해 직접 파일로 다운 받아 설치 합니다. Linux package / utility / libarary 파일 다운로드 리

junsuyoun.tistory.com


 

728x90
반응형

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.