웹서버 성능 측정 with wrk

일반 적으로 apache 성능 측정은 기존에 아파치 재단에서 배포하는 ab 테스트를 진행 했었다.

 

docker로 하다보니 apache 가 컨테이너 안에 있어서.. 어짜피 별도로 httpd를 호스트에 설치하거나 별도 벤치 프로그램을 설치해야 한다.

그리고 테스트 하려는 서버가 docker – nginx (캐시활성화) 이고, php-fpm 설정값 계산기를 만들어서 웹서버 부하 테스트가 필요 했기에… 별도의 툴을 찾다가 wrk 를 찾게 되었는데,

컴파일을 필요로 하지만 설치가 간단하고 결과 값 시인성이 좋은 듯 하다 ‘ㅅ’a

 

git 주소:  https://github.com/wg/wrk

 

2024-11-25_170259

주요 하게 볼 부분은 Latency, request, timeout, non-2xx-3xx responses 정도 일듯.

 

출처:  https://domdom.tistory.com/411

 

Synology – M.2 볼륨 만들기(GUI) 및 Unknown ssd 인식 개선

Synology에 M.2 Nvme 드라이브를 추가 해서 운영 하고 있다.

2024-10-23_134855

n100 미니PC 에서 적출해서 Synology에 추가해서 SSH 접속해서 lvm 명령어로 수동으로 파티션을 생성 해서 사용 했었다.
그런데 주기적으로 DSM이 업데이트가 되고 나면 구성해둔 볼륨을 인식 못하는 문제가 발생하였다.
아울러서 Unknown으로 나오고 주의로 표시되는 부분도 그렇고…(위 스크린샷은 합성이다 -3-a)

 

1.  Synology에 장착된 DISK 정보를 읽어서 데이터베이스를 생성 해주는 스크립트

https://github.com/007revad/Synology_HDD_db

2. 저장소 관리자(GUI) 에서 스토리지 풀 및 볼륨을 구성하는 스크립트

https://github.com/007revad/Synology_enable_M2_volume


 

두 스크립트의 제작자가 같아 사용법이 거의 같다.

그래서 두개의 스크립트를 같이 진행하지만 본인의 상황에 따라 스크립트 줄이거나 실행 옵션을 바꾸어 적용한다.

먼저 위 스크립트는  bash shell 코드로 작성되어 있으며 DSM 6, DSM 7을 지원 하는 것으로 밝히고 있다.

 

예시는 집에서 쓰고 있는 DS420+ 이다.

CPU: J4025 (2.0Ghz)
MEM: 2GB + 1 slot(8GB) = 10GB
HDD: HGST Deskstar 10TB * 4EA
M.2: TEAM TM8FP6256G, KPART512GBC2DVT

 


 

1. 첫번째 디스크 풀에 공유폴더 _SCRIPT 를 생성 한다.

주의: 스크립트는 M.2를 인식 시키기 위한 것이기 때문에 M.2 에 공유폴더를 생성 하면 안된다.
2024-10-23_094941 2024-10-23_095124

 

2. github 사이트에서 최신 릴리즈의 배포 파일을 다운 받는다.

https://github.com/007revad/Synology_HDD_db/releases
https://github.com/007revad/Synology_enable_M2_volume/releases

 

3. _SCRIPT 폴더에 배포 파일을 넣고 모두 압축을 해제 한다.

2024-10-23_113419

M.2(KPART512GBC2DVT) – (알리발 N100 랩탑에서 적출함) 의 경우 Unknown으로 표시 되기 때문에  Synology 에 ssh 서비스를 활성화 하고 ssh 접속 후 스크립트를 실행해서 아래와 같은 메세지를 확인했다.

KPART512GBC2DVT는 구글 검색을 했을때 HUADISK으로 확인 되어 /volume1/_SCRIPT/Synology_HDD_db-3.5.103/syno_hdd_vendor_ids.txt 파일 하단에 0xefff="HUADISK" 추가 했다.
이후 스크립트를 실행하면 /usr/syno/etc.defaults/pci_vendor_ids.conf 에 코드에 맞는 벤더를 선언해서 Unknown을 지정한 벤더로 나오게 된다.

 

4. 나스 재시작시(자동 업데이트 후) 자동 적용을 위한 스케쥴러에 등록 한다.

2024-10-23_102940 2024-10-23_103115 2024-10-23_103147 2024-10-23_103313

syno_enable_m2_volume.sh는 별다른 옵션 없이 실행 하면 “저장소 관리자(GUI)” 에서 M.2 스토리지 풀 생성이 가능하다.

syno_hdd_db.sh은 /var/lib/disk-compatibility/ds420+_host_v7.db 파일을 ds420+_host_v7.db.bak 파일로 백업 하고 로컬에서 검색된 디스크 정보를 추가하여 ds420+_host_v7.db 파일을 생성 해주는 기능이 들어 있다.

syno_hdd_db.sh 의 추가된 스크립트 옵션은 다음과 같다.

--noupdate synology 의 hdd DB 업데이트 기능을 끈다.(이로 인해 synology 내부 메세지가 발생할 수 있다.)
--ram 내 가정용 DS420+는 최대 크기(8GB)를 넘어 10GB으로 사용하고 있기 때문에 필요한 옵션이다.
--autoupdate=3 이 스크립트는 자동 업데이트 기능이 있는데 새 버전이 나오면 3일 이후 업데이트를 한다.

내가 쓰지는 않았지만 유용한 옵션

--incompatible 12bay 이상에서 Synology HDD 사용을 하지 않을 경우 주의로 나오것을 방지 한다.
--pcie Synology 외의 PCI-E NVME 확장 카드를 사용 가능하도록 한다.
--wdda W/D 하드의 경우 사용 기간이 3년 넘어갈 경우 warning 이 표시되는것을 방지 한다.
--ssd=sata1 주 하드디스크(primary reads)를 선언할 수 있다. (sata1 | sata1,sata2 | sda 처럼 지정 하거나 기본값 restore 으로 설정 가능)


설정이 완료 되면 Synology NAS를 재시작 하고 웹으로 접속(DSM) 저장소 관리자 에서 M.2 디스크로 볼륨을 생성할 수 있다
2024-10-23_104745

mobaxtrem 을 통한 원격지 서버에서 firefox 실행

서버에서 GUI환경이 필요가 있을 때 xwindows 를 설치하고 vnc 또는 xrdp 를 이용한 접속을 해서 사용할 수 있다.

다만 그렇게 할 경우 불필요한 많은 프로그램을 서버에 설치해야 하기 때문에 ssh 접속을 통해 X11-forwarding 기능을 이용해서

프로세스는 서버에 떠있고 GUI 화면은 접속한 컴퓨터에서 사용할 수 있다.

 

서버의 OS 는 OCI – oraclelinux 8 버전이다.

 

서버 sshd 설정 변경

sshd 재 시작

!!!!!주의!!!!!: sshd 관련 설정을 변경한 뒤 재 시작할 경우 이미 접속한 세션은 문제가 없지만 새로운 ssh 접속이 불가능 하다.

때문에 sshd를 재 시작한 경우 새로운 터미널 창으로 ssh를 접속해서 문제가 없는지 확인 해야 한다.

 

관련 프로그램 및 라이브러리 설치

설치되는  xterm 은 간단한 테스트를 위한 프로그램(GUI  터미널 프로그램) 이다.

mesa-* 은 firefox를 실행 하기 위한 그래픽 관련 프로그램 이다.

 

위와 같이 설치 후에 ssh 아래와 같이 xtrem 을 실행하면 아래와 같이 gui 터미널 창이 실행 되는 것을 확인 할 수 있다.

2024-10-10_112043

ssh 접속을 해서 GUI 터미널을 열은 쓸모 없는 짓(=_=)이지만 검증을 위해 사용한다.

 


 

mobaxterm 설정 변경 및 실행

2024-10-10_1055252024-10-10_113739

 

Hyper-v 서버에 연결(원격)

Hyper-V Server 2016 / 2019 free 의 경우 서버 생성 및 관리를 위해서 서버에 접속하여 사용이 되지 않고

자신의 PC 에 Hyper-V를 활성화 한뒤에 “서버에 연결…” 기능을 통해서 관리가 가능 하다. (Hyper-V – 나무위키 (namu.wiki))

즉 자신의 PC 에서 설정을 한뒤 아래와 같이 화면이 나오면 이를 통해서 관리 할 수 있다.

20240710_164937

다만 그냥 연결을 시도 해봐야 연결이 될리가 없고 꽤 번거로운 설정이 필요 하다.

기존 메뉴얼의 경우 찾아 보았으나 IP를 근거로 활용해서 접속하는 방법과 2개 이상 Hyper-V Server 를 접속하는 방법을 찾아서 포스팅을 한다 ‘ㅅ’a

 


 

일단 Hyper-V Server 에 원격으로 접속된 화면 에서 다음과 같이 “7) 원격 데스크톱”이 사용(보안 수준이 높은 클라이언트만) 으로 설정 되어 있어야 한다.
20240710_161201

 


 

자신의 PC 에 Hyper-V를 설치 하고 PowerShell 창을 열어서 다음과 같은 명령어를 실행 한다.

Hyper-v 의 두개 일 경우에 대한 설명이기 때문에 자신에 맞게 하나만 쓴다던가 하자 ‘ㅅ’a

cmdkey 의 경우 자격 증명 관리자에 아래 그림과 같이 windows 자격 증명을 생성하게 된다.

20240710_163851

 


 

로컬 컴퓨터 정책(gpedit.msc) 을 실행해서 컴퓨터 구성 >> 관리 템플릿 >> 시스템 >> 자격 증명 위임 >> 서버 인증이 NTLM 전용일 경우 새로운 자격 증명 허용 으로 이동하고 아래 그림과 같이 진행한다.

20240710_16214420240710_16225620240710_162618

마지막 그림과 같이 WSman/192.168.0.10WSman/192.168.0.20을 추가 해야 한다.

 


 

마지막으로 접속할 PC의 Hyper-V 에서 “서버에 연결…” 버튼으로 연결을 한다.

20240710_163450

 

연결이 된다면 첫번째 스크린샷과 같이 자신의 PC 의 Hyper-V 와 원격 Hyper-V Server 가 목록에 나타나고 관리를 할 수 있다. 🙂

 

Docker 로그 설정

WEB 및 WAS 를 docker 를 이용해서 구현을 하다 보니 디스크 사용량이 점점 많이 증가 하게 된다.

컨테이너를 지우고 새로 띄우면 로그는 날라 가지만 주기적으로 해야 하는 불편함…..

 

그래서 docker 에서 /etc/docker/daemon.json 에 로그 관련 설정을 추가 한다. (50MB, 10개)

 

그리고 Docker 를 재시작 한다.

 

이미 실행된 Container 에는 적용 되지 않는다. 즉 새롭게 생성한 Container만 적용이 된다.

docker container update 로도 변경 되지 않는 항목이기 때문에 컨테이너를 삭제하고 run을 새로 해야 한다.