나는 사용에 크게 의존하는 소프트웨어 테스트 서버를 운영하고 있습니다.대기줄(POSIX 메시지 큐). 한도를 적당한 수준으로 늘렸고 오래 전부터 작동하기 시작했습니다. 그러나 테스트(및 해당 mqueue)의 수는 계속 증가하고 새 mqueue가 생성되면 테스트가 실패하기 시작하지만 제한이 소진되지는 않은 것 같습니다.
$ cat /proc/sys/fs/mqueue/queues_max # maximum mqueue count
65535
$ sudo mount -t mqueue none /mnt
$ ls -1 /mnt | wc -l # current mqueue count
8445
$ ulimit -q # maximum bytes in mqueues
819200
$ du -s /mnt # current mqueues size
0 /mnt
통화 실패 후mq_open()
, errno
24로 설정됩니다. 이는 다음을 의미합니다./usr/include/asm-generic/errno-base.h
):
#define EMFILE 24 /* Too many open files */
그래서 오픈파일 제한을 확인해 봤는데 그것도 소진되지 않는 것 같습니다.
$ ulimit -n # file descriptors limit
1024
$ lsof -u $(whoami) | wc -l # currently open files
306
이 검사가 정확합니까? 그 밖에 확인해야 할 사항이 있나요?
나는 본 적이ulimit 사용량 확인 방법그러나 검사를 사용하는 것은 특정 제한사항에 특정한 것으로 보이며 거기에는 mqueue에 대한 언급이 없습니다.
mqueue의 동작은 시간이 지남에 따라 변하므로곤충내 커널 버전은 입니다 4.1.13-rt15+
. 적절한 방법을 사용하여 직접 커널을 구축했습니다.라이브 패치추가 수정이 필요하지 않습니다. 최근에 (문제가 나타나기 시작했을 때) 커널을 전환하지 않았습니다.