Q. 현재 서버에서 몇 개의 연결까지 가능한가요?
A. 모르겠다.
이 글은 모르는 것들만 잔뜩 모아놓은 글이니 넘어가셔도 됩니다.
리눅스에는 프로세스 당 별도의 스레드 제한이 없으며 시스템의 총 프로세스 수에 대한 제한만 있다. 스레드는 기본적으로 리눅스에서 공유 주소 공간이 있는 프로세스일 뿐이다.
cat /proc/sys/kernel/threads-max를 통해 max-threads (시스템의 총 프로세스 수와 동일한가?)에 대한 값을 알 수 있다.
file-max는 커널에 설정된 max file 값인 것 같다. 여기서 파일이라는 것이 정확히 무엇을 의미하는지는 모르겠다.
threads-max는 리눅스에서 최대로 생성할 수 있는 쓰레드의 개수인 것 같다.
여기서 ulimit -u를 통해 유저 1명이 사용할 수 있는 최대 프로세스 수를 알 수 있다.
내 경우 ulimit -u 의 결과는 15621이 나온다. 그러면 유저 1명은 최대 15621개의 프로세스를 사용할 수 있고, 이는 max-user-processes값과 같으니 max-user-processes는 유저 1명이 사용할 수 있는 최대 프로세스의 수라는 의미?
그럼 open-files는 뭘까? open files는 프로세스가 가질 수 있는 소켓 포함 파일의 개수라고 한다. 그러면 1인당 15621개의 프로세스를 사용할 수 있고, 그 프로세스는 1024개의 소켓 포함 파일을 가질 수 있으니, 유저 1명당 이용할 수 있는 파일의 수는 1024 * 15621 개인건가?
여기서 그럼, 유저 1명은 무엇을 의미하는 걸까? file-max는 커널에 설정된 max-file 값이라고 했는데, 유저 한명당 이용할 수 있는 파일의 수가 1024 * 15621이면 399661은 무엇을 나타내는 걸까?
완전 1도 모르겠다.