데비안 최대 파일 설명자

데비안 최대 파일 설명자

데비안 레니. 루트를 포함한 모든 사용자에 대해:

# cat /proc/sys/fs/file-max
262144

# sysctl fs.file-max
fs.file-max = 262144

# ulimit -Hn
1024

# ulimit -Sn
1024

파일 /etc/security/limits.conf에 주석 처리되지 않은 행이 없습니다.

1024는 어디서 구하나요?

답변1

그만큼fs.file-maxsysctl할당할 수 있는 파일 핸들 수를 보여줍니다.시스템 전체, ulimit리소스 제한은 프로세스별(또는 UID별)입니다. 전자는 다음에 설명되어 있습니다.Documentation/sysctl/fs.txt:90:

파일-최대 및 파일-번호:

file-max의 값은 최대 파일 수를 나타냅니다.
Linux 커널이 할당할 핸들입니다. 많이 얻으면
파일 핸들 부족에 대한 오류 메시지가 표시되는 경우
이 한도를 늘리고 싶습니다.

1024개 파일 rlimit는 어디에도 명시적으로 설정되지 않습니다. 이는 pid 1의 기본값으로 커널에 하드코딩되어 있습니다.include/asm-generic/resource.h:81:

/*
 * init 작업에 대한 부팅 시간 rlimit 기본값:
 */
#INIT_RLIMITS 정의 \
{ \
        ...
        [RLIMIT_NOFILE] = { INR_OPEN_CUR, INR_OPEN_MAX }, \
        ...
}

어떤 참조 INR_OPEN_CURINR_OPEN_MAXinclude/linux/fs.h:26:

#define INR_OPEN_CUR 1024 /* nfile rlimits의 초기 설정 */
#define INR_OPEN_MAX 4096 /* nfile rlimits에 대한 하드 제한 */

init다른 프로세스는 단순히 (또는 pid 1인 것) 제한을 상속받습니다 .

/proc/1/limits데비안에서 1024를 소프트로 보고하는 이유는 무엇입니까?그리고 열심히파일 제한? 모르겠어요: sysvinit 소스나 데비안 커널 패치 모두 이를 변경하지 않습니다. 아마도 initramfs 스크립트일 수도 있습니다. (저는 기본값이 1024/4096인 Arch를 실행합니다.)

답변2

@grawity가 제기한 질문에 대해 이 커널 커밋은 다음을 설명할 수 있습니다.

0ac1ee0bfec2a4ad118f907ce586d0dfd8db7641 커밋
저자: 팀 가드너
날짜: 2011년 5월 24일 화요일 17:13:05 -0700

    ulimit: 파일 수에 대한 기본 하드 ulimit를 4096으로 높입니다.

적어도 RHEL5.4에서는 1024/1024이고 RHEL6.2에서는 1024/4096입니다.

관련 정보