打开文件数限制功能不断地制造问题


检查您的打开文件数量的限制,它们不停地以一种奇怪的方式损害咱们的潜在客户。应该杜绝此事再次发生,可是要发现这种危害,尤为是对于不一样的Linux分布式系统而言,确实很困难。分布式

打开文件对于系统操做而言相当重要。由于它们定义了一个进程所能打开的总的文件句柄数量,要记住,在Unix/Linux上,全部的一切都是以文件的形式存在的,包括全部的的实体文件,尤为是TCP/IP 及Unix套接字也算做文件。这意味着像Nginx或MySQL等服务可以耗尽全部文件句柄,包括用户TCP/IP 链接及磁盘上的文件句柄。因此,很轻易地就可以消耗完一台中等负荷系统的全部可用文件量。ide

许多Linux系统默认的打开文件数量为1024个,这意味着在Nginx或MySQL系统中,若是有几百个用户/链接和打开文件的话,就很容易达到文件用量上限。当达到系统上限时,随着用户登陆/登出系统,会有不少奇怪的故障随时发生。有些服务会在日志中报告错误,可是绝大多数服务不会给您任何通知。spa

为避免此类故障,您须要重设默认值,设置地址在/etc/security/limits.conf目录下。咱们经常使用的最小值是16535个,可是后来在不少系统上使用了65535个。如您用的是大型系统,还使用了HAPeoxy, 您可将该值设的更高,如256,000或更高的值。因此,为使工做趁心如意,将用户(*表示系统上的全部用户)的软件及硬件限制设置在65535。需登出再登入才能使设置生效。日志

同时,您要明白,因为limits.conf对于根用户而言须要特定的行,因此Debian/Ubuntu系统会遇到一些特殊的问题。许多系统(如CentOS),都使用“*”来表示全部用户,可是以Debian为基础的系统“*”并不包括根用户,看起来没有意义,可是事实就是这样的。blog

最后,请记住有一个Linux内核系统级的参数,即fs.file-max.可将打开文件数量设置到最大值,该参数也可根据RAM或其它因素(根据分配状况),进行动态设置,可是在繁忙的系统中,该参数的值可能很小。咱们一般将其设置为500K或1百万,但前提是确保系统不会在使用过程当中达到这一上限。能够经过sysctl及sysctl.conf进行设置。进程


(Authored by Steve Mushero / ChinaNetCloud CEO & CTO  本博客英文原文请点此查看
get

相关文章
相关标签/搜索