[server] 실행중인 프로세스에서 최대 파일 제한 설정

결국 최대 열린 파일 제한에 도달하는 프로세스가 오래 실행됩니다. 실패한 후에 변경하는 방법을 알고 있지만 명령 줄에서 실행중인 프로세스의 변경 방법이 있습니까?



답변

CentOS / RHEL의 최신 커널 (2.6.32+)에서는 런타임에 / proc / <pid> / limits를 사용하여이를 변경할 수 있습니다.

cd /proc/7671/
[root@host 7671]# cat limits  | grep nice
Max nice priority         0                    0
[root@host 7671]# echo -n "Max nice priority=5:6" > limits
[root@host 7671]# cat limits  | grep nice
Max nice priority         5                    6


답변

여기 에 설명 된 것처럼 prlimitutil-linux 2.21에 도입 된 명령을 사용하면 실행중인 프로세스의 한계를 읽고 변경할 수 있습니다.

이것은 /proc/<pid>/limits메인 라인 커널에 통합되지 않은 쓰기 가능한 후속 작업 입니다. 이 솔루션은 작동합니다.

prlimit(1)아직 없는 경우 prlimit(2)맨 페이지 에서 코드를 최소한의 버전으로 찾을 수 있습니다 .


답변

최신 버전의 util-linux-ng에서는 prlimit 명령을 사용할 수 있습니다. 자세한 내용은 다음 링크를 참조하십시오 /superuser/404239/setting-ulimit-on-a-running-process


답변

man ulimit-n 옵션을 사용하여 ulimit 를 시도 할 수 있지만 mag 페이지는 대부분의 OS에서이를 설정하도록 허용하지 않습니다.

다음을 사용하여 시스템 전체 파일 설명 제한을 설정 sysctl -w fs.file-max=N하고 부팅 후 변경 사항을 유지합니다./etc/sysctl.conf

그러나 주어진 시간에 너무 많은 파일을 열어야하는지 실제로 프로세스를 살펴보고 실제로 일부 파일을 닫고 프로세스에서보다 효율적으로 수행하는 것이 좋습니다.


답변

프로세스는 프로그래밍 된 경우 (또는 해킹을 관리하는 경우) 자체 소프트 한계를 변경할 수 있지만 CAP_SYS_RESOURCE 기능이 없으면 하드 한계를 늘릴 수 없습니다. 에서 런타임에 한계를 검사 할 수 있습니다 /proc/$pid/limits.


답변