我在Ubuntu 12上使用Tomcat7时遇到了太多打开文件的问题,因此我将打开文件的硬限制和软限制从分别为4096和1024增加到16384。现在我不再收到有关打开文件的错误,但总体CPU%似乎已经上升了。增加最大文件数是否也会在CPU时间方面产生一些成本?如果没有,为什么不将ulimit设置得非常高呢?
整个ulimit存在的原因是通过防止进程使用超出“正常”资源的数量来保护系统的整体性能。“正常”可能因所做的事情而异,但默认情况下将限制设置得非常高会使ulimit失去意义,并允许任何进程使用荒谬的资源量。对于没有用户的服务器而言,这不如大型多用户环境那么重要,但它仍然是针对有缺陷或被攻击的进程的有用保障。您的CPU可能会上升,因为您的计算机现在正在执行更多的工作,而不是错误输出。PS-您需要确保您的tomcat环境中没有问题...它可能可以打开数千个文件,我不知道您的应用程序,但这也可能是某些故障的迹象。如果是这样,您刚刚允许了该漏洞的影响变得更加严重:( 如果您能解释为什么tomcat需要打开数千个文件,那很好,但如果不能...哎呀。