linux系统突破局部文件句柄数和全局文件句柄数限制

问题说明:

  •     在linux系统中,如果开的线程数过多,或者打开的文件太多,会报这样的错误:java.io.IOException: Too many open files。意思是系统能够打开的句柄数已经达到了限制,无法打开新的文件句柄了。

突破局部文件句柄数(单个进程能够创建的文件句柄数):

  •     查看当前局部文件句柄数:ulimit -n
  •     临时修改当前局部文件句柄数:ulimit –n 10000,这是临时设置,系统重启后设置会丢失
  •     永久修改当前局部文件句柄数:修改文件/etc/security/limits.conf,文件末尾加上:
    •     * hard nofile 1000000
    •     * soft nofile 1000000
  •     修改文件后需要重启机器,才能生效

临时突破全局文件句柄数(所有进程所能够创建的文件句柄数)

  •   查看全局文件句柄数:cat /proc/sys/fs/file-max
  •   配置:echo 1000000 > /proc/sys/fs/file-max
  •   配置后立即生效

永久突破全局文件句柄数

  • 配置文件/etc/sysctl.conf,在文件末尾加上:fs.file-max=1000000
  • 使配置文件生效:sysctl -p

特别注意:

  • 局部文件句柄数一定不要超过全局文件句柄数!!!我就遇到过,因为一时疏忽,把局部文件句柄数设置超过了全局文件句柄数,导致无法开机后无法登陆的现象!!!

你可能感兴趣的:(linux)