tail -f 时,有如下报错:
1 |
tail: inotify cannot be used, reverting to polling: Too many open files |
说明:tail -f 在远古的时候,是不断地轮询检查文件有没有更新,这个方式效率比较低;新石器时代,kernel提供了inotify机制,就是,你不需要总来问,只要你说一声,文件有更新的话我就通知你,strace 部分信息如下:
1 2 3 4 |
inotify_init() = 4 inotify_add_watch(4, "/data/logs/phpor.20160708.log", IN_MODIFY|IN_ATTRIB|IN_DELETE_SELF|IN_MOVE_SELF) = 1 fstat(3, {st_mode=S_IFREG|0666, st_size=858053, ...}) = 0 read(4, |
上面的错误是: 需要notify的文件太多超过最大限制了,修改方式如下:
修改 fs.inotify.max_user_instances 到一个更大的值