私は使用に大きく依存するソフトウェアテストサーバーを運営しています。待ち行列(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+
。適切な方法を使用して直接カーネルを構築しました。ライブパッチ追加の変更は必要ありません。最近(問題が発生し始めたとき)カーネルを切り替えませんでした。