
SwooleServer::listen() 함수의 두 번째 인자인 backlog은 TCP 서버가 수용할 수 있는 최대 연결 큐의 크기를 설정하는 데 사용됩니다. backlog을 설정하면 서버가 수용할 수 있는 최대 연결 큐의 크기가 지정되며, 이 설정이 없으면 운영체제의 기본값이 적용됩니다.
backlog을 설정하면 다음과 같은 효과가 발생합니다.
- 서버가 수용할 수 있는 최대 연결 큐의 크기가 지정되며, 이 설정이 없으면 운영체제의 기본값이 적용됩니다.
- backlog이 설정된 경우, 서버가 수용할 수 있는 최대 연결 큐의 크기가 지정되며, 이 설정이 없으면 운영체제의 기본값이 적용됩니다.
backlog을 설정하지 않을 경우에는 다음과 같은 문제가 발생할 수 있습니다.
- 운영체제의 기본값이 적용되며, 이 값이 너무 작을 경우, 서버가 수용할 수 있는 연결이 제한됩니다.
- 운영체제의 기본값이 적용되며, 이 값이 너무 클 경우, 서버가 수용할 수 있는 연결이 과다하게 증가할 수 있습니다.
backlog의 설정이 정확한가요?
- 네, backlog의 설정은 서버가 수용할 수 있는 최대 연결 큐의 크기를 설정하는 데 사용됩니다.
backlog의 설정이 실제로 작동하는지 확인하는 방법은 다음과 같습니다.
- SwooleServer::listen() 함수를 호출할 때, backlog을 설정하고, 연결을 수용할 때, 연결 큐의 크기를 확인합니다.
- SwooleServer::listen() 함수를 호출할 때, backlog을 설정하지 않고, 연결을 수용할 때, 연결 큐의 크기를 확인합니다.
예제를 통해 확인해 보겠습니다.
#hostingforum.kr
php
use SwooleServer;
$server = new Server('127.0.0.1', 9501);
$server->set([
'worker_num' => 1,
'backlog' => 128, // backlog을 설정
]);
$server->on('connect', function ($server, $fd) {
echo "Client: $fd connect.n";
});
$server->on('receive', function ($server, $fd, $from_id, $data) {
echo "Client: $fd received message: $datan";
});
$server->on('close', function ($server, $fd) {
echo "Client: $fd close.n";
});
$server->start();
위 예제에서, backlog을 설정하여 서버가 수용할 수 있는 최대 연결 큐의 크기를 128으로 설정하였습니다. 연결을 수용할 때, 연결 큐의 크기를 확인할 수 있습니다.
2025-08-03 19:04