mqueue 사용량을 안정적으로 확인하는 방법은 무엇입니까?

mqueue 사용량을 안정적으로 확인하는 방법은 무엇입니까?

나는 사용에 크게 의존하는 소프트웨어 테스트 서버를 운영하고 있습니다.대기줄(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(), errno24로 설정됩니다. 이는 다음을 의미합니다./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+. 적절한 방법을 사용하여 직접 커널을 구축했습니다.라이브 패치추가 수정이 필요하지 않습니다. 최근에 (문제가 나타나기 시작했을 때) 커널을 전환하지 않았습니다.

관련 정보