![INotify max_user_instances와 max_user_watches의 차이점은 정확히 무엇입니까?](https://linux55.com/image/157986/INotify%20max_user_instances%EC%99%80%20max_user_watches%EC%9D%98%20%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80%20%EC%A0%95%ED%99%95%ED%9E%88%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
인터넷에서 일부 기사를 읽은 후 INotify의 차이점을 조금 이해하지 못했습니다.최대 사용자 인스턴스 수그리고최대 사용자 시계 수.
Linux 관계자로부터:
/proc/sys/fs/inotify/max_user_instances
이는 실제 사용자 ID당 생성할 수 있는 INotify 인스턴스 수의 상한을 지정합니다.
그리고
/proc/sys/fs/inotify/max_user_watches
실제 사용자 ID당 생성할 수 있는 모니터 수의 상한을 지정합니다.
max_user_instances
이는 여러 파일 시스템을 모니터링할 수 있고 제한이 지정된 INotify 프로세스의 인스턴스라는 의미입니까 max_user_watches
?
전자가 옳다면 실제로는 어떻게 작동합니까? 일부 파일 시스템을 모니터링해야 하는 모든 프로세스가 INotify의 사용자 인스턴스를 생성합니까(사용자 ID와 관련되어 있기 때문에 사실이 아닌 것 같습니다)?
현재 Amazon Ec2 인스턴스에 배포한 후 다음 오류가 발생합니다.
System.IO.IOException: The configured user limit (128) on the number of INotify instances has been reached.
제가 올바르게 이해했다면 파일 시스템 변경 사항을 모니터링하는 인스턴스가 너무 많이 생성되었다는 뜻입니까? 원인은 무엇입니까?
답변1
"인스턴스"는 로 표시되는 단일 파일 설명자입니다 inotify_init()
. 단일 inotify 파일 설명자는 하나의 프로세스에서 사용하거나 여러 프로세스에서 공유할 수 있으므로 프로세스가 아닌 사용자별로 할당됩니다.
"watch"는 inotify 인스턴스에서 관찰되는 단일 파일입니다. 각 시계는 고유하므로 사용자에게만 제한됩니다.
애플리케이션이 너무 많은 인스턴스를 생성하는 경우 너무 많은 프로세스를 시작하거나(프로세스 간에 inotify 파일 설명자를 공유하지 않음) 단순한 버그가 발생합니다. 예를 들어 열려 있는 inotify 설명자가 누출될 수 있습니다(열고 잊어버릴 수 있음). , 닫지 않고).
또 다른 가능성은 하나의 설명자로 충분할 때 애플리케이션이 제대로 작성되지 않았고 여러 설명자를 사용한다는 것입니다(1개 이상의 inotify 설명자가 거의 필요하지 않음).
열린 파일 설명자는 procfs를 통해 나열될 수 있습니다.
ls -al /proc/<application process number>/fd/
설명자에 대한 일부 추가 정보는 에서 볼 수 있습니다 /proc/<PID>/fdinfo/<descriptor number>
.