Mac의 최대 연결 수 제한 및 포트에 대한 매개 변수 설정

3016 단어 프로비저닝서버
얼마 전에 다음 서버의 병발 성능 문제를 주목했고 아예 Mac의 관련 매개 변수 설정을 연구했는데 여기에 기록해 봅시다.

최대 접속 수 제한


최대 접속 수 제한은 시스템이 열 수 있는 최대 파일 수 (파일 설명자) 의 제한입니다. 전역과 프로세스 두 가지로 나뉘며 해당하는 명령은 다음과 같습니다.
$ sysctl kern.maxfiles

출력:kern.maxfiles: 12288 설명: 전역 제한, 즉 시스템 기본 최대 연결수 제한은 12288입니다
$ sysctl kern.maxfilesperproc

출력:kern.maxfilesperproc: 10240 설명: 단일 프로세스의 기본 최대 연결 수 제한은 10240입니다
$ sudo sysctl -w kern.maxfiles=1048600

출력:kern.maxfiles: 12288 -> 1048600 설명: 시스템 최대 연결수 12288 ~ 1048600 설정
$ sudo sysctl -w kern.maxfilesperproc=1048576

출력:kern.maxfilesperproc: 10240 -> 1048576 설명: 프로세스 연결 수 제한을 설정합니다. 프로세스의 최대 연결 수는 전역 연결 수보다 작습니다.

ulimit 명령

$ ulimit -n

출력: 2560 설명: "ulimit - n"명령은 현재 셸이 열 수 있는 최대 파일 수를 표시합니다. 기본값: 2560, 이 값은kern보다 작습니다.셸이 프로세스이기 때문에 maxfilesperproc의 값입니다.
 $ ulimit -n 1048576

설명: 현재 셸이 열 수 있는 최대 파일 수를 1048576으로 설정합니다. 이 값은kern보다 크면 안 됩니다.maxfilesperproc, 그렇지 않으면 설정 실패를 알립니다.

동적 포트 범위

$ sysctl net.inet.ip.portrange

출력:net.inet.ip.portrange.first: 49152  net.inet.ip.portrange.last: 65535
Linux 동적 포트 번호의 기본 범위는 32768-65535입니다. 즉, 클라이언트가 같은 IP와 같은 포트 번호를 연결하면 최대 30000여 개의 연결만 만들 수 있고, Mac은 기본적으로 16000개 정도의 연결만 할 수 있습니다.
$ sysctl -w net.inet.ip.portrange.first=32768

설명: 동적 분배 시작 포트 번호를 32768로 설정하면 클라이언트가 설정할 수 있는 연결 수를 늘릴 수 있습니다.
참고: IANA 포트 번호 목록에는 잘 알려진 등록 포트 번호가 포함되며 동적 포트 번호 범위를 지정합니다.

문제


이상의 방식으로 매개 변수를 설정하는 데 문제가 있습니다. 시스템이 다시 시작된 후에 이 매개 변수들은 기본값으로 회복됩니다. 해결 방법은 매개 변수를/etc/sysctl에 쓰는 것입니다.conf 파일에 있지만 기본적으로 이 파일은 존재하지 않기 때문에 먼저 만들어야 합니다.
sudo touch /etc/sysctl.conf

그리고 파라미터를 파일에 쓰세요.
kern.maxfiles=1048600
kern.maxfilesperproc=1048576
net.inet.ip.portrange.first=49152   
net.inet.ip.portrange.last=65535

시스템을 다시 시작하고 결과를 보고 성공을 표시합니다.ulimit-n의 값은 ulimit-n 1048576까지 쓸 수 있다.bashrc에서 자동 수정을 실현합니다.

좋은 웹페이지 즐겨찾기