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
반응형
'Operation System > Unix & Linux' 카테고리의 다른 글
ifdown과 ifconfig down flags 차이 (0) | 2022.12.19 |
---|---|
Linux 포그라운드(forground) 프로세스 백그라운드(background)로 변경하기 (0) | 2022.12.17 |
top: command not found (0) | 2022.12.12 |
LINUX 숫자 1부터 n까지 / 알파뱃 a부터z 데이터 만들기 (0) | 2022.12.04 |
리눅스 파일 삭제 되지 않는 경우 (inode 삭제) (0) | 2022.12.03 |
소중한 공감 감사합니다