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+。適切な方法を使用して直接カーネルを構築しました。ライブパッチ追加の変更は必要ありません。最近(問題が発生し始めたとき)カーネルを切り替えませんでした。

ベストアンサー1

おすすめ記事