예를 들어 php-fpm의 경우:
#listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php-fpm.sock
TCP 포트를 통해 UNIX 소켓 기반 수신기를 사용하는 것 사이에 상당한 성능 차이가 있습니까? (PHP뿐만 아니라 일반적인 경우도 있습니다. 서비스마다 다른가요?)
답변1
UNIX 도메인 소켓은 루프백 인터페이스를 통해 TCP 소켓보다 더 나은 성능(더 적은 수의 데이터 복사본, 더 적은 컨텍스트 전환)을 제공해야 합니다.
소켓은 동일한 서버에서 실행되는 프로그램(분명히 네트워크 지원 없음)에서만 액세스할 수 있으며 프로그램에는 소켓 파일에 액세스하는 데 필요한 권한이 있어야 합니다.
답변2
TCP를 사용하면 전체 네트워크 스택도 사용하게 됩니다. 동일한 컴퓨터에 있더라도 이는 네트워크 스택 및 관련 프로토콜을 사용하기 위해 패킷이 캡슐화되고 캡슐화 해제됨을 의미합니다.
Unix 도메인 소켓을 사용하는 경우 필요한 다른 모든 네트워크 프로토콜을 강제로 구현할 필요는 없습니다. 소켓은 하드 드라이브의 i-노드로만 식별됩니다.