【Linux】ファイルディスクリプタ

  • 投稿者:
  • 投稿カテゴリー:Linux

ファイルディスクリプタとは

プログラムがアクセスするファイルや標準入出力などをOSが識別するために用いる識別子
ファイルディスクリプタには、識別子とともにファイル名、ファイルサイズ、プログラムが操作中のファイル内の位置、ファイル作成、更新日時などの情報が含まれており、OSは識別子によってどのファイルを操作するかを判断する

OS全体でオープン可能なファイルディスクリプタ数

lv /proc/sys/fs/file-max
98912

1プロセスで同時にオープンできるファイルディスクリプタ数

ulimit -a | grep "open files"
open files                      (-n) 1024

プロセスで利用可能なファイルディスクリプタ数(mysqlの場合)

lv /proc/`ps afx | grep [m]ysqld | cut -f1 -d" "`/limits | grep "Max open files"
Max open files            1024                 4096                 files

現在利用中のファイルディスクリプタ数(mysqlの場合)

ファイルを開いているプロセス情報を表示する

# lsof -c mysql
COMMAND     PID  USER   FD   TYPE             DEVICE SIZE/OFF   NODE NAME
mysqld_sa 10387  root  cwd    DIR              202,0     4096      2 /
mysqld_sa 10387  root  rtd    DIR              202,0     4096      2 /
mysqld_sa 10387  root  txt    REG              202,0   975488 393357 /bin/bash
mysqld_sa 10387  root  mem    REG              202,0  2508736   3458 /usr/lib/locale/locale-archive
mysqld_sa 10387  root  mem    REG              202,0  1599504 393317 /lib/x86_64-linux-gnu/libc-2.13.so
mysqld_sa 10387  root  mem    REG              202,0    14768 393332 /lib/x86_64-linux-gnu/libdl-2.13.so
mysqld_sa 10387  root  mem    REG              202,0   167952 393401 /lib/x86_64-linux-gnu/libtinfo.so.5.9
mysqld_sa 10387  root  mem    REG              202,0   136936 393795 /lib/x86_64-linux-gnu/ld-2.13.so
mysqld_sa 10387  root  mem    REG              202,0    26066   2250 /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache
mysqld_sa 10387  root    0r   CHR                1,3      0t0   1204 /dev/null
mysqld_sa 10387  root    1w   CHR                1,3      0t0   1204 /dev/null
mysqld_sa 10387  root    2w   CHR                1,3      0t0   1204 /dev/null
mysqld_sa 10387  root  255r   REG              202,0    27565  14188 /usr/bin/mysqld_safe
mysqld    11028 mysql  cwd    DIR              202,0     4096 134897 /var/lib/mysql
mysqld    11028 mysql  rtd    DIR              202,0     4096      2 /
mysqld    11028 mysql  txt    REG              202,0 14512336  14185 /usr/sbin/mysqld
mysqld    11028 mysql  mem    REG              202,0    47616 393334 /lib/x86_64-linux-gnu/libnss_files-2.13.so
mysqld    11028 mysql  mem    REG              202,0    43552 393330 /lib/x86_64-linux-gnu/libnss_nis-2.13.so
mysqld    11028 mysql  mem    REG              202,0    89056 393328 /lib/x86_64-linux-gnu/libnsl-2.13.so
(略)