【发布时间】:2012-04-23 03:49:27
【问题描述】:
我有一些代码通过 ssh 转发到 AWS 机器的连接运行多个 rest 查询(仅供参考:这些查询正在访问运行在这台机器上的 Solr 服务器),并且查询针对我的 localhost(转发到 AWS 实例)。
代码最初运行良好,可以根据需要获取数据,但运行一段时间后,代码停止(在 Eclipse 中)。
此时,终端(即我启动 ssh 隧道的位置)完全冻结,充满了字符串:
“接受:打开的文件太多”
因为这个无限打印与 bash 终端无关(即我无法判断 ssh 连接是否仍然存在,并且没有文本指示我在哪个 shell... ) 我不知道它是来自亚马逊还是来自我的客户端。
我想找出导致此行为的原因并查明导致我的终端爆炸的机器
为了测试两台机器中的哪一台导致了错误的无限打印,我在服务器上运行了 ulimit 命令...并发现 允许的最大打开文件数(在 aws 服务器上)在客户端程序(从我的 ide 运行) 正在执行时,在任何给定时间都远高于打开文件的数量(也使用 ulimit 确定)。
我在客户端上做了同样的测试,发现打开文件的数量没有明显增加。
一些细节:我在短时间内对拥有超过 100GB 数据的 SOLR 服务器运行数百个查询。
任何提示如何确定为什么我的 sshd mac os x 终端正在死机并无限打印此消息可能对我非常有用。当然,无论它们是否特定于 solr。也就是说,任何关于使用 solr 服务时为什么会发生这种情况的见解也可能有助于解决这个问题。
【问题讨论】: