MySql进程使用的文件描述符数量的问题

在CentOS 6.5, mysql版本为5.1的机器上,查看mysql进程的文件描述符使用量
使用命令

1
2
// grep 后面跟的是mysql进程号
lsof -n |awk '{print $2, $NF}' | sort | uniq -c | sort -nr | grep 1697 | more

可以看到每个数据库文件打开的文件数量只占用了一个文件描述符,即使当前mysql启动了多个子进程

但在CentOS7.2, mysql版本为5.6的机器上,重复上面命令,得到的 结果为

可以看到打开的文件描述符的数为mysql以及他的子进程数量

一开始以为是mysql版本问题,每个子进程自己又去打开相应的数据库文件,于是就在CentOS 7.2上装了个mysql 5.1版本,重复上面命令,得到的结果为

结果还是一样,搜索了下资料,找到了原因
因为lsof版本的原因,在lsof为4.8版本的时候,dup的文件描述符都算为新的文件描述符
为了验证这个原因的正确性,从CentOS 6.5系统拷贝了lsof到CentOS 7.2中,执行结果

从图中可以看到,正是lsof版本的原因导致在CentOS 7上查看mysql文件描述符会比CentOS 6多很多