Nginx Worker Process란? 동시 접속을 처리하는 구조와 설정 방법
웹 서버를 운영하다 보면 Nginx의 성능과 관련하여 Worker Process(워커 프로세스)라는 용어를 자주 접하게 됩니다. 특히 웹사이트에 접속하는 사용자가 많아지면 하나의 요청을 어떻게 처리하는지, 여러 사용자의 접속을 어떻게 동시에 처리하는지 이해하는 것이 중요합니다.
Nginx는 Apache와 같은 전통적인 프로세스 중심의 웹 서버와는 다른 구조를 사용합니다. 하나의 Master Process가 전체 서버를 관리하고, 실제 클라이언트의 요청은 여러 개의 Worker Process가 처리하는 방식입니다.
이번 글에서는 Nginx Worker Process의 개념과 역할, 동시 접속 처리 방식, worker_processes와 worker_connections 설정 방법, 그리고 서버 성능을 높이기 위한 기본적인 설정 방법까지 알아보겠습니다.
1. Nginx Worker Process란?

Nginx Worker Process는 실제로 클라이언트의 HTTP 요청을 처리하는 프로세스입니다.
Nginx를 실행하면 일반적으로 하나의 Master Process와 하나 이상의 Worker Process가 생성됩니다.
각 프로세스의 역할은 다음과 같이 구분할 수 있습니다.
- Master Process: Nginx 전체를 관리
- Worker Process: 클라이언트 요청 처리
- Worker Connection: Worker Process가 동시에 처리할 수 있는 연결 수
쉽게 비유하면 Master Process는 매장의 관리자이고, Worker Process는 실제 고객을 응대하는 직원이라고 생각할 수 있습니다.
Master Process가 서버의 전체 운영을 관리하고 Worker Process가 실제 웹 페이지 요청, 정적 파일 제공, 프록시 요청 등의 작업을 처리합니다.
이러한 구조 덕분에 Nginx는 많은 수의 동시 접속을 효율적으로 처리할 수 있습니다.
2. Nginx Master Process와 Worker Process의 관계
Nginx의 프로세스 구조를 이해하려면 Master Process와 Worker Process의 관계를 알아야 합니다.
Nginx가 시작되면 Master Process가 먼저 실행됩니다.
Master Process는 다음과 같은 작업을 담당합니다.
- 설정 파일 읽기
- Worker Process 생성
- Worker Process 관리
- 설정 변경 적용
- 로그 관리
- 재시작 및 종료 관리
반면 Worker Process는 실제 서비스 요청을 처리합니다.
예를 들어 사용자가 웹사이트에 접속하면 클라이언트의 요청은 Nginx로 전달되고, Worker Process가 해당 요청을 처리하여 웹 페이지나 파일 등의 응답을 반환합니다.
따라서 실제 웹 서비스 성능을 이해하려면 Worker Process의 동작 방식을 파악하는 것이 중요합니다.
3. Nginx는 어떻게 동시 접속을 처리할까?
Nginx의 가장 큰 특징 중 하나는 Event-Driven Architecture(이벤트 기반 구조)입니다.
전통적인 웹 서버에서는 접속자가 증가할수록 프로세스나 스레드를 추가로 생성하여 요청을 처리하는 방식이 많이 사용되었습니다.
하지만 Nginx는 하나의 Worker Process가 여러 연결을 효율적으로 관리할 수 있도록 이벤트 기반 방식으로 동작합니다.
예를 들어 1명의 사용자가 접속했을 때 Worker Process 하나가 해당 요청을 처리한다고 생각할 수 있습니다.
하지만 실제로는 하나의 Worker Process가 여러 클라이언트의 연결을 동시에 관리할 수 있습니다.
이러한 구조를 통해 Nginx는 많은 동시 접속 환경에서도 상대적으로 적은 시스템 자원으로 요청을 처리할 수 있습니다.
특히 정적 파일을 제공하거나 Reverse Proxy 역할을 수행하는 환경에서 Nginx의 이러한 구조가 장점으로 작용합니다.
4. worker_processes 설정이란?
Nginx의 Worker Process 개수는 worker_processes 설정으로 지정할 수 있습니다.
설정 파일인 nginx.conf에서 다음과 같이 작성할 수 있습니다.
worker_processes 4;
위 설정은 Nginx가 4개의 Worker Process를 사용하도록 지정하는 것입니다.
일반적으로 CPU 코어 수를 고려하여 Worker Process 개수를 결정합니다.
최근 Nginx 환경에서는 다음과 같이 auto 옵션을 사용하는 방법도 많이 활용됩니다.
worker_processes auto;
auto를 사용하면 Nginx가 시스템의 CPU 코어 수를 기준으로 Worker Process 개수를 자동으로 결정합니다.
예를 들어 서버의 CPU 코어가 4개라면 Nginx가 적절한 Worker Process 수를 자동으로 설정할 수 있습니다.
다만 서버의 실제 작업 환경과 CPU 사용량, 다른 서비스의 실행 여부 등을 함께 고려하는 것이 좋습니다.
무조건 Worker Process를 많이 설정한다고 해서 성능이 좋아지는 것은 아닙니다.
5. worker_connections란?
Worker Process 개수와 함께 알아야 하는 설정이 worker_connections입니다.
worker_connections는 하나의 Worker Process가 동시에 처리할 수 있는 연결 수를 지정합니다.
예를 들어 다음과 같이 설정할 수 있습니다.
events {
worker_connections 1024;
}
위 설정에서는 하나의 Worker Process가 최대 1024개의 연결을 처리할 수 있도록 설정합니다.
만약 Worker Process가 4개이고 Worker Connections가 1024라면 단순 계산으로 다음과 같이 생각할 수 있습니다.
4 × 1024 = 4096
즉, 이론적으로 최대 약 4096개의 연결을 처리할 수 있는 구조가 됩니다.
하지만 실제 동시 접속 가능 수가 정확하게 4096이라는 의미는 아닙니다.
운영체제의 파일 디스크립터 제한, 네트워크 환경, Reverse Proxy 구성, Keep-Alive 연결, 서버의 CPU와 메모리 등 다양한 요소가 실제 처리 가능한 연결 수에 영향을 줍니다.
따라서 worker_processes × worker_connections의 결과를 실제 사용자가 접속할 수 있는 최대 인원으로 단순하게 해석해서는 안 됩니다.
6. worker_processes와 worker_connections의 차이
두 설정은 이름이 비슷하기 때문에 처음 Nginx를 접하는 사람에게 혼동을 줄 수 있습니다.
하지만 역할은 명확하게 다릅니다.
설정의미
| worker_processes | Worker Process의 개수 |
| worker_connections | Worker 하나가 처리할 수 있는 연결 수 |
| worker_processes auto | CPU 환경에 맞춰 Worker Process 자동 설정 |
| events | 연결 관련 설정을 정의하는 영역 |
예를 들어 다음과 같은 설정이 있다고 가정해보겠습니다.
worker_processes 4;
events {
worker_connections 1024;
}
이 경우 Worker Process는 4개이며 각 Worker가 최대 1024개의 연결을 처리하도록 설정됩니다.
다만 앞서 설명한 것처럼 실제 서버에서 처리 가능한 연결 수는 운영체제와 Nginx의 다른 설정에 따라 달라질 수 있습니다.
7. 실제 nginx.conf 기본 구조
Nginx 설정 파일은 여러 영역으로 구성되어 있습니다.
기본적인 구조는 다음과 같습니다.
worker_processes auto;
events {
worker_connections 1024;
}
http {
server {
listen 80;
location / {
root /var/www/html;
index index.html;
}
}
}
여기에서 가장 중요한 부분은 events 영역입니다.
events {
worker_connections 1024;
}
이 영역에서 Worker Process가 처리할 수 있는 연결과 관련된 설정을 관리합니다.
HTTP 서버 설정은 http 영역에서 관리하며 실제 웹사이트의 도메인, 포트, 정적 파일 경로, Reverse Proxy 등의 설정을 추가할 수 있습니다.
8. Nginx Worker Process 확인하는 방법
Linux 서버에서 현재 실행 중인 Nginx 프로세스를 확인하려면 다음 명령어를 사용할 수 있습니다.
ps aux | grep nginx
또는 다음 명령어를 사용해도 됩니다.
ps -ef | grep nginx
정상적으로 실행 중이라면 Master Process와 여러 개의 Worker Process가 표시될 수 있습니다.
예를 들어 다음과 같은 형태로 확인할 수 있습니다.
root 1234 ... nginx: master process nginx
www-data 1235 ... nginx: worker process
www-data 1236 ... nginx: worker process
www-data 1237 ... nginx: worker process
여기에서 master process가 Master Process이고 worker process라고 표시되는 항목이 실제 요청을 처리하는 Worker Process입니다.
9. Worker Process를 무조건 늘리면 좋을까?
Nginx를 처음 공부할 때 흔히 하는 오해가 있습니다.
"동시 접속자가 많으니 Worker Process를 많이 만들면 성능이 더 좋아지겠지?"
하지만 반드시 그렇지는 않습니다.
Worker Process가 지나치게 많아지면 CPU와 메모리 등의 시스템 자원을 불필요하게 사용할 수 있습니다.
특히 서버의 CPU 코어 수보다 지나치게 많은 Worker Process를 생성한다고 해서 성능이 비례해서 증가하는 것은 아닙니다.
따라서 일반적인 환경에서는 다음과 같이 설정하는 방법을 고려할 수 있습니다.
worker_processes auto;
이후 실제 서버의 CPU 사용량과 메모리 사용량, 접속량 등을 확인하면서 필요한 경우 세부적으로 조정하는 것이 좋습니다.
10. Nginx 성능 최적화에서 중요한 것
Nginx의 성능은 Worker Process 하나의 설정만으로 결정되지 않습니다.
다음과 같은 요소를 함께 확인해야 합니다.
CPU
Worker Process는 CPU 자원을 사용하기 때문에 CPU 코어 수와 서버의 실제 작업량을 확인해야 합니다.
메모리
동시 연결이 많아지면 연결 관리와 애플리케이션 처리 과정에서 메모리 사용량도 증가할 수 있습니다.
파일 디스크립터
많은 동시 연결을 처리하려면 운영체제가 허용하는 파일 디스크립터 수 역시 중요합니다.
네트워크
서버의 네트워크 대역폭이 부족하면 Worker Process 설정을 최적화하더라도 전체적인 응답 속도가 개선되지 않을 수 있습니다.
백엔드 서버
Nginx를 Reverse Proxy로 사용하는 경우 PHP-FPM, Node.js, Python 애플리케이션, Java 서버 등 백엔드 시스템의 성능도 중요합니다.
즉, Nginx 성능 최적화는 하나의 설정값만 변경하는 것이 아니라 전체 서버 구조를 함께 살펴보는 작업입니다.
11. 설정 변경 후에는 반드시 테스트하기
Nginx 설정을 변경한 후에는 바로 서버를 재시작하기보다 먼저 설정 파일에 오류가 없는지 확인하는 것이 좋습니다.
다음 명령어를 사용할 수 있습니다.
sudo nginx -t
정상적인 설정이라면 다음과 비슷한 메시지가 표시됩니다.
syntax is ok
test is successful
설정에 문제가 없다면 다음과 같이 Nginx를 Reload할 수 있습니다.
sudo systemctl reload nginx
Reload는 현재 연결을 최대한 유지하면서 새로운 설정을 적용할 수 있기 때문에 설정 변경 시 유용하게 사용할 수 있습니다.
12. Nginx Worker Process를 이해해야 하는 이유
Nginx Worker Process를 이해하면 단순히 설정 파일의 숫자를 변경하는 수준에서 벗어나 웹 서버가 실제로 어떻게 동작하는지 이해할 수 있습니다.
특히 다음과 같은 상황에서 Worker Process와 Worker Connections의 개념이 중요합니다.
- 방문자가 많은 웹사이트 운영
- API 서버 운영
- Reverse Proxy 구성
- 이미지나 정적 파일이 많은 사이트
- 여러 애플리케이션 서버 앞에 Nginx 구성
- 동시 접속자가 많은 서비스 운영
Nginx는 이벤트 기반 구조를 사용하기 때문에 적은 수의 Worker Process로도 많은 연결을 효율적으로 관리할 수 있습니다.
따라서 서버의 CPU 코어 수와 연결 수, 운영체제의 제한 등을 함께 확인하면서 적절한 값을 설정하는 것이 중요합니다.
마무리
Nginx Worker Process는 실제 클라이언트의 요청을 처리하는 핵심 구성 요소입니다.
Master Process가 Nginx 전체를 관리하고 Worker Process가 실제 네트워크 요청을 처리하는 구조를 이해하면 Nginx의 동시 접속 처리 방식도 자연스럽게 이해할 수 있습니다.
특히 worker_processes는 Worker Process의 개수를 결정하고, worker_connections는 각 Worker Process가 처리할 수 있는 연결 수와 관련된 설정입니다.
기본적인 서버에서는 다음과 같은 설정부터 시작할 수 있습니다.
worker_processes auto;
events {
worker_connections 1024;
}
하지만 실제 서버의 성능은 CPU, 메모리, 파일 디스크립터, 네트워크, 백엔드 애플리케이션 등 여러 요소에 의해 결정됩니다.
따라서 특정 숫자를 무조건 적용하기보다는 서버의 현재 환경과 트래픽을 확인하면서 설정을 조정하는 것이 가장 좋은 방법입니다.
Nginx를 안정적으로 운영하기 위해서는 설정값 자체를 외우는 것보다 Master Process, Worker Process, Event-Driven 구조가 서로 어떻게 연결되어 있는지 이해하는 것이 중요합니다.
이러한 기본 개념을 이해해 두면 이후 Nginx의 Reverse Proxy, Load Balancing, Keep-Alive, SSL, 캐싱 및 성능 최적화 설정을 공부할 때도 훨씬 쉽게 접근할 수 있습니다.