Amazon ec2 如何避免;“打开的文件太多”;在负载平衡器中,将ulimit-n设置为更高的值有什么副作用?

Amazon ec2 如何避免;“打开的文件太多”;在负载平衡器中,将ulimit-n设置为更高的值有什么副作用?,amazon-ec2,Amazon Ec2,当负载平衡一个具有大量请求的生产系统时,或者在对其进行负载测试时,我们会遇到“打开的文件太多”的问题,如下所示 [2011-06-09 20:48:31,852] WARN - HttpCoreNIOListener System may be unstable: IOReactor encountered a checked exception : Too many open files java.io.IOException: Too many open files at sun.

当负载平衡一个具有大量请求的生产系统时,或者在对其进行负载测试时,我们会遇到“打开的文件太多”的问题,如下所示

[2011-06-09 20:48:31,852]  WARN - HttpCoreNIOListener System may be unstable: IOReactor encountered a checked exception : Too many open files
java.io.IOException: Too many open files
    at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)
    at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:152)
    at org.apache.http.impl.nio.reactor.DefaultListeningIOReactor.processEvent(DefaultListeningIOReactor.java:129)
    at org.apache.http.impl.nio.reactor.DefaultListeningIOReactor.processEvents(DefaultListeningIOReactor.java:113)
    at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute(AbstractMultiworkerIOReactor.java:315)
    at org.apache.synapse.transport.nhttp.HttpCoreNIOListener$2.run(HttpCoreNIOListener.java:253)
    at java.lang.Thread.run(Thread.java:662)
如果要打开的最大允许文件数(ulimit)设置为低,则负载平衡器中会出现此异常。 我们可以通过提供更高的值(这里给出655350)来增加ulimit来修复上述异常。 乌利米特-n 655350


然而,将ulimit-n设置为更高的数字可能会影响负载平衡器的整体性能,从而以前所未有的方式影响我们网站的响应时间。将unumber-n设置为更高的值是否有任何已知的副作用

其副作用正是——在正常情况下,您希望限制进程打开的文件句柄的数量,这样它就不会耗尽可用的文件描述符,也不会由于编程错误或DoS攻击而造成其他不良后果。如果您认为您的系统不会这样做(或者显然不会在正常范围内工作!)这样就没有其他副作用了。

副作用正是如此——在正常情况下,您希望限制进程打开文件句柄的数量,这样它就不会耗尽可用的文件描述符,也不会由于编程错误或DoS攻击而做其他不好的事情。如果您认为您的系统不会这样做(或者显然无法在正常限制范围内工作!),则不会产生其他副作用。

您可以使用lsof命令查看当前打开的文件,并查找是否存在已删除的打开文件。您可以使用lsof命令查看当前打开的文件,并查找是否存在已删除的打开文件。