시스템(Linux)

리눅스 내 동시 접속자 증가에 대응하기 위한 몇 가지 주요 조치 사항

forward error correction Circle 2023. 7. 14. 09:21
반응형

리눅스에서 동시 접속자 수를 관리하고 처리하기 위해 커스텀 설정을 할 수 있습니다. 

 

동시 접속자 증가에 대응하기 위한 몇 가지 주요 조치 사항에 대해 알아보겠습니다.

1) 파일 디스크립터 제한 수정: 동시 접속자 수는 주로 파일 디스크립터 제한에 영향을 받습니다. 한정된 수의 파일 디스크립터를 사용하면 동시 접속을 처리하는 데 제한이 생길 수 있습니다. 이를 해결하기 위해 /etc/security/limits.conf 파일을 수정하여 파일 디스크립터 제한을 늘릴 수 있습니다.

2) TCP/IP 설정 조정: TCP/IP 스택의 설정을 조정하여 동시 접속자에 대한 처리 능력을 향상시킬 수 있습니다. /etc/sysctl.conf 파일에서 net.core.somaxconn, net.ipv4.tcp_max_syn_backlog, net.ipv4.tcp_max_tw_buckets 등과 같은 매개 변수를 조정하여 커널의 TCP/IP 동작을 변경할 수 있습니다.

3) 웹 서버 설정 조정: 웹 서버 소프트웨어(Apache, Nginx 등)의 설정을 조정하여 동시 접속자 처리에 대한 최적화를 수행할 수 있습니다. 이를 통해 동시 접속자에 대한 연결 및 처리 리소스를 효율적으로 활용할 수 있습니다.

4) 부하 분산: 동시 접속자 처리를 위해 로드 밸런서를 도입하여 서버 간의 부하를 분산시킬 수 있습니다. 로드 밸런서는 동시 접속자 요청을 여러 서버에 분산시켜 처리할 수 있으므로, 서버 부하를 분산하고 처리 용량을 확장할 수 있습니다.

5) 서버 확장: 동시 접속자가 계속해서 증가하는 경우, 서버 자원의 확장을 고려해야 할 수 있습니다. 이는 추가 서버를 도입하거나 가상화를 통해 자원을 확장하는 것을 의미합니다.

/etc/security/limits.conf 파일은 리눅스 시스템에서 사용자에 대한 리소스 제한을 설정하는 파일입니다. 이 파일을 수정하여 파일 디스크립터 제한 등을 조정할 수 있습니다. 다음은 /etc/security/limits.conf 파일을 수정하는 방법에 대한 예시입니다:

편집기를 사용하여 /etc/security/limits.conf 파일을 엽니다. 다음 명령을 사용할 수 있습니다:

vi /etc/security/limits.conf
파일의 끝에 사용자 또는 그룹에 대한 설정을 추가합니다. 설정은 다음 형식을 따릅니다:

<domain><type><item><value>

1) <domain>: 설정을 적용할 도메인을 지정합니다. 사용자는 @username, 그룹은 @groupname과 같이 지정할 수 있습니다. 모든 사용자 또는 그룹에 대한 설정을 적용하려면 *을 사용할 수 있습니다.
2) <type>: 설정의 유형을 지정합니다. 일반적으로 soft 또는 hard를 사용합니다. soft 설정은 사용자에게 경고를 주고 시스템이 작동하지만 제한을 초과할 수 있습니다. hard 설정은 제한을 강제로 적용하여 초과 시 접근을 거부합니다.
3) <item>: 제한할 항목을 지정합니다. 주로 nofile(파일 디스크립터 제한), nproc(프로세스 제한) 등을 설정할 수 있습니다.
4) <value>: 설정 값을 지정합니다. 설정에 따라 값의 의미가 다를 수 있습니다.
예를 들어, 모든 사용자에 대한 파일 디스크립터 제한을 변경하려면 다음과 같이 설정할 수 있습니다:

/etc/security/limits.conf

*    hard    nofile    5000
*    soft    nofile    4000

이는 모든 사용자에 대해 최대 5000개의 파일 디스크립터를 허용하고, 초과할 경우 4000개까지만 허용한다는 의미입니다.

파일을 저장하고 종료합니다. 편집기에서는 :wq를 입력하여 저장하고 종료할 수 있습니다.

변경 사항이 적용되기 위해 시스템을 재부팅하거나 해당 사용자를 로그아웃 및 다시 로그인해야 합니다.

 

* ulimit [옵션] 값 ( Centos , RHEL 기준)
-a : 모든 제한 사항을 보여줌.
-c : 최대 코어 파일 사이즈
-d : 프로세스 데이터 세그먼트의 최대 크기
-f : shell에 의해 만들어질 수 있는 파일의 최대 크기
-s : 최대 스택 크기
-p : 파이프 크기
-n : 오픈 파일의 최대수
-u : 오픈파일의 최대수
-v : 최대 가상메모리의 양
-S : soft 한도
-H : hard 한도

* 각 항목의 설명

명령어 설명
ulimit -a  Soft 설정 보기
로운 프로그램을 생성하면 기본으로 적용되는 한도
ulimit -aH Hard 설정 보기
소프트한도에서 최대로 늘릴 수 있는 한도

 

 

apache 와 같이 웹 서비스를 운영 시 동접자가 많은 경우 구동되는apache 프로세스 수와 해당  프로세스가 처리하게되는 파일 수 또한 증가 하게 됩니다.

     
core file size   (blocks, -c) 0    코어파일의 최대크기
data seg size  (kbytes, -d) unlimited  프로세스의 데이터 세그먼트 최대크기
scheduling priority (-e) 0   
file size (blocks, -f) unlimited     쉘에서 생성되는 파일일 최대크기
pending signals (-i) 14943  
max locked memory (kbytes, -l) 64  
max memory size  (kbytes, -m) unlimited resident set size의 최대 크기(메모리 최대크기
open files  (-n) 1024 한 프로세스에서 열 수 있는 open file descriptor의 최대 숫자(열수 있는 최대 파일 수)  ,Too many open files error 발생시 해당값 조절해주면됨
pipe size     (512 bytes, -p) 8    512-바이트 블럭의 파이프 크기
POSIX message queues (bytes, -q) 819200  
real-time priority (-r) 0  
stack size  (kbytes, -s) 10240  
cpu time (seconds, -t) unlimited   총 누적된 CPU 시간(초)
max user processes  (-u) 1024 단일 유저가 사용가능한 프로세스의 최대 갯수
virtual memory  (kbytes, -v) unlimited  쉘에서 사용가능 한 가상 메모리의 최대 용량
file locks (-x) unlimited  

 

ulimit 명령을 통한 변경
-n –u 를 사용하여 max user process 와 open files 개수를 수정 합니다.
# ulimit -n 4096
# ulimit -u 8192
# ulimit -a
...
open files                      (-n) 4096
max user processes              (-u) 8192




반응형