aix vs linux 비교/공통 script

while 문(반복)loop 명령어 do,done 활용, 4 way handshake

infra 2022. 5. 18. 18:28

루프명령어는 while, until , for 가 있으나, until 은 실무에서 거의 쓰지않으므로 배제한다.

추후에 for 루프명령어에 대한 설명을 진행하겠다.

 

while문의 정의

 

while 명령은 다음에 나오는 명령을 평가하고 만약 종료상태가 0 이면 루프의 몽체(do-done)를 실행하게 된다. 

done 키워드에 도달하면 다시 루프의 최상단으로 돌아가서 while 명령을 체크하고 명령의 종료상태를 체크한다.

while에 의해 평가되는 명령의 종료상태값이 0 이 아닐 때까지 루프를 반복하게 되며,

종료상태값이 0 이 아니면 done 아래의 문장을 실행한다. 즉, while 루프를 빠져나간다.

#while true
>do
>clear
>netstat|grep -i fin_wait_1 |wc -l |awk '{printf "FIN_WAIT_1 COUNT = %s \n",$1}'
>sleep 1
>netstat|grep -i fin_wait_2 |wc -l |awk '{printf "FIN_WAIT_2 COUNT = %s \n",$1}'
>sleep 1
>netstat|grep -i close_wait |wc -l |awk '{printf "CLOSE_WAIT COUNT = %s \n",$1}'
>sleep 1
>netstat|grep -i time_wait |wc -l |awk '{printf "TIME_WAIT COUNT = %s \n",$1}'
>sleep 1
>netstat|grep -i est |wc -l |awk '{printf "ESTABLISHED SESSION COUNT = %s \n",$1}'
>sleep 3
>done

while문으로 시작하여 do done 사이에 반복할 구문을 작성한다.

WEB 서버 내 Max Client 를 확인하고 싶으나, 정확하게 하는 방법은
WEB 서비스 내의 max client 설정방법은 추후 업로드하겠다.

=> max client 를 넘어서는 순간, java heap memory 영역에 OOM(Out Of Memory)가 발생한다. 뿐만 아니라,

해당 모바일 웹서버 또는 웹서버 내에 http 503 error( 서버 내부 오류)등 페이지가 표시되지 않게 된다. 그러면 해당 사이트를 이용하려던 고객들은 서비스를 이용하지 못하여 이에 따른 장애로 발생하게 된다.

 

이런 장애 상황에 대한 모니터링 방법은 다음과 같다.


[1] 해당 nmon(AIX,Linux공통) 또는  top, htop(linux), topas(AIX) 를 활용하여

해당 서비스망에 대한 네트워크 트래픽을 주의깊게 관찰하기

 

[2] 메모리 영역<물리 메모리 또는 가상 메모리[paging space(AIX),swap(Linux)>등을 파악하기

 

[3]3/4 way hand shake[netstat 관련 명령어]를 통해 established 된 세션 및 FIN_WAIT_1(혹은 FIN_WAIT_2=4 way hand shake일때 존재함)을 파악한다.


OS 서버 입장에서의 established( 요청 및 응답이 최종적으로 이루어진 상태)등의

최종적으로 세션이 연결완료된 상태의 세션이라도 확인하기 위해 해당 구문을 작성하였다.

established 되었다고 해서 max client 와의 차이점은 있다.

 

 

 

해당 구문에서 FIN_WAIT_1, CLOSE_WAIT, TIME_WAIT 만 있었다면 3WAY hand shake (요청 및 응답)구조가 되었을걸로 보이나, 해당 서버 내에서 확인했을 때 FIN_WAIT2까지 있었으므로 4way hand shake가 있을거라 판단된다.

 

sleep 뒤에 숫자를 입력하면 그 숫자의 초(second)를 의미하며, 갱신한다는 의미이다.

1초 뒤 갱신해서 첫번째열의 값을 출력하고

<첫번째열 fin_wait_1 갯수를 도출 : netstat|grep -i fin_wait_1 |wc -l |awk '{printf "FIN_WAIT_1 COUNT = %s \n",$1}'>

1초 뒤 다시 갱신해서 두번째열의 값을 출력한다.

<두번째열 fin_wait_2 갯수를 도출 : netstat|grep -i fin_wait_2 |wc -l |awk '{printf "FIN_WAIT_2 COUNT = %s \n",$1}'

 

...

이런식으로 마지막열의 최종적으로 맺어진 established 상태의 갯수를 파악할 때는 3초 뒤 출력한다는 의미이다.

netstat|grep -i est |wc -l |awk '{printf "ESTABLISHED SESSION COUNT = %s \n",$1}'

이걸 수행하고 나서 done 이라는 끝맺음으로 다시 첫번째열부터 1초 단위로 수행한다.

이를 반복하는 구문을 사용하며, 출력형태는 다음과 같다.

 

 

주의할 것은 해당 while문을 쓰기전 file 탭에서 unlimited된 상태값인지 확인하고 unlimited가 맞다면 while문을 사용하라.

 

AIX Linux
#ulimit -a
time(seconds)            unlimited
file(blocks)                unlimited
data(kbytes)              unlimited
stack(kbytes)              4193220
memory(kbytes)          unlimited
coredump(blocks)        unlimited
nofiles(descriptors)       unlimited
threads(per process)     unlimited
processes(per user)       unlimited
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 7206
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 2048
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 8192
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

 

3way 핸드쉐이크에 대한 개념은 다음 유투브링크를 통해 확인해본다.

 

https://www.youtube.com/watch?v=Ah4-MWISel8&t=318s 

 

 

 

'aix vs linux 비교 > 공통 script' 카테고리의 다른 글

crontab 등록 및 script 사용방법  (0) 2022.06.06