오늘 내 서버가 Too many open files in system:와 충돌했지만 이미 높은 값이 있습니다. 이에 대한 최대 값은 얼마입니까?

Google에 “좋은 결과가없는 것 같습니다. 이러한 값을 설정할 때 고려해야 할 사항이 무엇인지 설명합니다. 그들은 단지 100k처럼 설정하라고 말합니다.

현재 10GB 만 사용하는 32GB RAM 서버가 있습니다. 파일 제한을 매우 높은 값으로 늘리면 RAM 사용량이 증가한다고 가정합니다.이를 계산하는 데 사용할 수있는 공식이 있나요? 8GB RAM의 경우처럼 X 개의 파일을 열 수 있습니까?

현재 설정 :

cat /proc/sys/fs/file-max 100000 ulimit -Hn 1048576 ulimit -Sn 1024 

댓글

  • 답은 아니지만 최대 열린 파일 수를 제한하는 것이 RAM을 절약하는 방법이 아니라 디스크 I / O 성능을 절약하는 방법이라는 생각이 듭니다. 많은 수의 열린 파일을 허용한다는 것은 (잠재적으로) 많은 수의 디스크 액세스. 또한 시스템 전체에 대한 전체 제한과 이에 대한 프로세스 별 제한이있을 수 있습니다. Linux 사용자가 아니므로 '에 대해 자세히 설명 할 수 없습니다. 그 이외의 ulimit는 프로세스 별 리소스 제한을 표시 / 설정합니다.
  • 어쨌든 SSD 디스크에 대한 문제일까요? 그것은 ' 서버이고 ' 서버가 죽어도 상관하지 않습니다. 호스팅 회사는 서버를 교체하고 백업을 가지고 있습니다. 또한 네트워크 소켓도이 문제를 일으킬 수 있다는 것을 읽었으며 주로 성능에 관심이 있습니다. 성능이 향상되는 한 ' 100 % 또는 5 %를 사용하는 경우 하드웨어 비용을 지불합니다. ' 왜 관심이 있습니까? 클라우드 서버의 경우이 문제를 볼 수 있지만 전용 하드웨어에서는 그렇지 않습니다.
  • 예, 열린 소켓의 수도이 제한에 포함됩니다 (일반적으로 열린 파일 설명자). 나는 그것을 잊었다. 따라서 RAM이 유일한 관심사라면 ' 제공하는 서비스 가 할당을 시작한다는 의미가 아니라면 한도 증가에 대해 걱정하지 않을 것입니다. 각 오픈 소켓과 관련된 i> 추가 메모리. 이것은 당신 만이 조사 할 수있는 것입니다.

Answer

Kusalananda가 말했듯이 file-max는 메모리 사용에 직접적인 영향을주지 않지만 프로세스가 더 많은 파일 디스크립터를 열 수있게하여 두 가지 모두 커널에서 파일 설명을 추적하고 메모리를 증가시킵니다. 설명 및 설명자를 사용하는 프로세스에서의 사용) — 커널 주석은 커널 데이터에 대해 파일 당 약 1KB를 제안하며, 종료되면 기본값 file-max (8192)를 줄입니다. 시스템 부팅시 메모리의 10 % 이상을 나타냅니다 ( RAM이 80MiB에 불과 함). 커널이 부과하는 최대 값은 아키텍처의 C에서 long 유형의 변수에 저장할 수있는 최대 값입니다.

, inode-max도 늘려야합니다. 커널 문서 는 이것이 “file-max의 값보다 3-4 배 더 커야합니다. stdin, stdout 및 네트워크 소켓에도 inode 구조체가 필요하므로 처리하십시오.”

file-max를 누르면“VFS : file-max limit n 에 도달했습니다”라는 커널 로그 메시지가 표시됩니다. ”을 n 에 적절한 값으로 지정합니다. 로그에이 정보가 없으면 file-max를 누르지 않거나 로그를 너무 많이 필터링하고있는 것입니다 (정보 수준 로그 메시지).

(file-maxCAP_SYS_ADMIN로 프로세스를 제한하지 않으므로이를 눌러도 모든 것이 중지되지는 않습니다.)

댓글

  • 그러면 임의적으로 높은 숫자를 갖는 데 단점이 없습니까? 내 시스템에 ' inode-max가 보이지 않습니까? 여기에 Ubuntu 16.04가 있습니다. 서버 충돌을 다시 방지하고 싶습니다.이 서버에서 여러 웹 서비스를 실행하고 ' 리소스 활용에 대해서는 신경 쓰지 않습니다.
  • 단점은 프로세스가 급증한다는 것입니다. 파일 설명에 대한 전반적인 제한에 걸리지 않으므로 다른 방식으로 리소스 부족을 유발할 수 있습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다