文件句柄默认参数与调优参数对比
--------------------------------------------------------------------------------------------------------------------------------
默认参数
通常来说,如果机器的内存越大,file-max的分配的默认值也会越大;
fs.file-max = 174118
fs.file-nr = 174118
fs.xfs.filestream_centisecs = 3000
调优参数
fs.file-max = 1000000
fs.file-nr = 1000000
fs.xfs.filestream_centisecs = 3000
表示系统级别的能够打开的文件句柄的数量。是对整个系统的限制,并不是针对用户的. ulimit -n 控制进程级别能够打开的文件句柄的数量与此不同。提供对shell及其启动的进程的可用文件句柄的控制。这是进程级别的。
一般情况下,无需修改,除非有并发在50w以上,一个千万的文件打开数足够了针对系统。
--------------------------------------------------------------------------------------------------------------------------------
文件监听句柄及软硬连接默认参数与调优参数对比
默认参数
fs.protected_hardlinks=1 用于限制普通用户建立硬链接 0:不限制用户建立硬链接 1:限制,如果文件不属于用户,或者用户对此用户没有读写权限,则不能建立硬链接
fs.protected_symlinks=1 用于限制普通用户建立软链接 0:不限制用户建立软链接 1:限制,允许用户建立软连接的情况是 软连接所在目录是全局可读写目录或者软连接的uid与跟从者的uid匹配,又或者目录所有者与软连接所有者匹配
fs.may_detach_mounts=1 K8S建议有容器运行的主机必须开启此值
fs.inotify.max_user_instances= 128 inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建 , 是一个内核用于通知用户空间程序文件系统变化的机制,表示每一个real user ID可创建的inotify instatnces的数量上限。
fs.inotify.max_queued_events=16384 表示调用inotify_init时分配给inotify instance中可排队的event的数目的最大值,超出这个值的事件被丢弃,但会触发IN_Q_OVERFLOW事件。
fs.inotify.max_user_watches= 8192 表示同一用户同时可以添加的watch数目(watch一般是针对目录,决定了同时同一用户可以监控的目录数量)
调优参数
fs.protected_hardlinks=1
fs.protected_symlinks=1
fs.inotify.max_user_instances= 8192
fs.inotify.max_queued_events= 16384
fs.inotify.max_user_watches= 524288
计算根据每一个inotify user instance大约会消耗5KB的内存,所以在内存允许的情况下可以适当增加,一般建议32G内存的系统调整扩展到fs.inotify.max_user_instances= 8192 fs.inotify.max_user_watches=524288,避免出现(Too many open files) 让人以为是fs句柄不够,其实不是,是监听数目不够
计算公式: fs.inotify.max_user_instances使用内存总量(bytes) = fs.inotify.max_user_instances * 5KB = 8192 * 5*1024 = 41943040 bytes = 40MIB
fs.inotify.max_user_instances使用内存总量(bytes) = fs.inotify.max_user_instances * 5KB = 2048 * 5*1024 = 10485760 bytes = 10MIB
64位系统:计算比例:fs.inotify.max_user_watches = fs.inotify.max_user_instances * 64
32位系统:计算比例:fs.inotify.max_user_watches = fs.inotify.max_user_instances * 32
用户级别:(查找命令)
find /proc/*/fd/* -type l -lname 'anon_inode:inotify' -print 2>/dev/null | cut -d/ -f3 |xargs -I '{}' -- ps --no-headers -o '%U' -p '{}' | sort | uniq -c | sort -n
进程级:(查找命令)
find /proc/*/fd/* -type l -lname 'anon_inode:inotify' -print 2>/dev/null | cut -d/ -f3 |xargs -I '{}' -- ps --no-headers -o '%U %p %c' -p '{}' | sort | uniq -c | sort -nr
|