본문 바로가기
Developer/Server & JVM

[OS] 리눅스 서버 반응

by 순수한소년 2023. 8. 2.
728x90
반응형
 
서버의 cpu 부하 상태 확인 - 서버의 반응이 늦을 때

 

프로세스 상태 점검 - 부하 원인 발견

네트워크 상태 점검 - 부정한 엑세스 감시, 설정 확인

네트워크 카드 점검 - 이더넷의 상태, 카드 설정 확인

디스크 상태 - 용량 확인

로그 - 서버 작동에 문제가 있을 시 확인

 

### 서버의 cpu 부하 확인

명령어 – w / top / uptime

uptime

12:47pm up 3 days, 12:22, 3 users, load average: 1.21, 0.86, 0.44

부하 점검 1.21(최근 1분간의 평균) 0.86(최근 5분간의 평균) 0.44(최근 15분간의 평균)

 

리눅스에서 cpu의 부하는 이 load average라는수치를 표준으로 한다.

이는 cpu를 필요로 하고 있는(ps명령어로 STAT가 [R]로 표시되고 있는) 프로세스 수의 평균치이다.

예를 들어 한 프로세스가 폭주해 항상 CPU를 필요로 하게 되면 그 프로세스 때문에 수치가 1 증가하고 서버에 부하를 주게된다.

 

간단한 표준으로 CPU가 한 개인 경우는 load average가 1을 초과하면 서버는 바쁜 상태이고, 1 미만이면 CPU부하에 관해서는 별 문제가 없다.

load average가 마구 올라가는 경우는 어떤 프로세스가 폭주하고 있다고 생각해야 한다.

특히 유저가 만든 CGI프로세스가 폭주해서 load average가 올라가는 경우가 흔하다.

 

### 프로세스 상태 확인

명령어 – ps / top

ps aux

실행 중인 프로세스가 출력된다.

Kill 프로세스 번호 명령으로 프로세스를 종료한다.

USER PID CPU %MEM VSZ RSS TTY STAT START TIME

root 1 0.0 0.2 1104 72 ? S Feb11 0:04

COMMAND

Init [3]

 

[풀이]

USER - 실행하고 있는 유저 명

PID - 프로세스 번호

CPU - cpu 이용률

%MEM - 메모리 이용률

VSZ/RSS – 이용하고 있는 메모리 사이즈

TTY - 표준 입력이나 표준 출력에 사용되는 단말기 종류

STAT - 프로세스 상태

START - 프로세스의 개시된 시간

TIME - cpu를 이용한 시간

COMMAND – 명령어의 이름

 

[프로세스의 상태]

S – 슬립

D – I/O 대기

R – CPU 대기/실행 중

T – 정지 중

Z – 종료 중

W – 모두 SWAP되어 있다.

< - 우선도가 높다.

N – 우선도가 낮다.

L – 특별한 프로세스 (전혀 SWAP되지 않은 메모리가 할당되어 있다.)

 

@ 이상 징후

STAT가 항상 R(CPU를 필요로 하고 있는 상태), CPU 이용률이 계속 99%가 되거나 메모리 이용률이 비 정상적으로 증대하고 있는 프로세스는 폭주하고 있을 가능성이 높다.

정상 종료가 되지 않으면 Kill –KILL PID로 강제 종료한다.

 

### 네트워크의 상태 확인

명령어 – netstat –t (-t 옵션은 TCP/IP의 상태를 표시)

접속자의 주소와 정보 등이 표시되고, 접속중인 상태는 ESTABLISHED라고 표시된다.

&egrave; 부정한 엑세스 주소를 없앤다.

netstat –tl (-l 옵션은 TCP/IP로 접속을 기다리는 상태를 표시)

TCP/IP로 접속할 수 있는 서버가 표시되고, 대기중인 상태는 LISTEN이라고 표시된다.

&egrave; 필요 없는 서버가 실행되어 있지 않은 지 확인

 

### NIC 상태 확인

명령어 – ifconfig

네트워크 카드의 상태를 확인하고, MAC주소(네트워크 카드 자신의 번호)나 카드에 할당되어 있는 IP주소 이더넷 충돌의 수, 통과한 패킷의 수, 하드웨어의 정보 등을 확인

 

### 디스크의 빈 공간을 확인

명령어 – df

사용 가능한 용량이 적어졌다면 여분의 파일을 지우거나 빈 공간이 큰 영역에 디렉토리를 이동해서 그 디렉토리에 symbolic 링크를 붙이는 등의 대책이 필요하다.

 

### 디렉토리 용량을 조사한다.

명령어 – du

du /var/log | sort –nr

표시된 숫자는 KB 단위이고 디렉토리마다 사용량이 큰 순서로 표시

일반적으로 아파치의 로그가 가장 크다.

 

[리눅스 로그 파일]

/var/log/boot.log – 데몬의 실행이나 종료의 로그

/var/log/cron – crond의 로그(정기적으로 명령어를 실행하는 데몬)

/var/log/dmesg – 커널의 메시지

/var/log/message – BIND나 커널, su 등 그 외의 로그

/var/log/secure – 로그인의 기록이나 tcpd의 로그(TCP Wrappers)

 

[서버의 로그]

/var/log/maillog – sendmail 의 로그

/var/log/smtplog – smptfeed 의 로그

/var/log/xferlog – ftpd 의 로그

/var/log/samba/log.* - samba 의 로그

/usr/local/www/logs/access_log – apache 엑세스 로그

/usr/local/www/logs/error_log – apache 에러 로그

/usr/local/www/logs/ssl_request_log – mod_ssl 엑세스 로그

/usr/local/www/logs/ssl_engine_log – mod_ssl 암호화에 관한 로그

 

[root의 패스워드를 잊어버릴 경우]

ctrl + alt + delete 로 재 부팅 &agrave; lilo 프롬프트에서 linux S라고 입력한 후 패스워드 변경

 

[실행 중 fsck가 실패 하였을 때]

파일 시스템이 망가졌을 경우에는 장치 명이 나온 후 패스워드를 입력한다.

이후 fsck 수정할 파티션 장치 입력

 

반응형