我运行一个专用的代理服务器与Squid,我试图感受到服务器可以处理的最大连接数。 我意识到这归结于Linux机器上可用的文件描述符。
我已经find了大量有关增加最大文件描述符的信息,但我想找出理论上的最大值。 根据StackOverflow问题“为什么操作系统限制文件描述符? ,它归结为可用的系统RAM,这是很有道理的。
现在,考虑到我有多less内存可用,如何确定操作系统文件描述符的最大值? 一些显然仍然允许系统稳定运行的值。
也许有人可能有其他高端生产服务器的想法? 什么是最大化同时连接(文件描述符)的潜在数量的“标准”? 任何深入了解我如何可以最大限度地提高Linux系统的文件描述符将不胜感激。
Linux OOM杀手和Java进程
哪个进程正在使用我的记忆?
通过分叉减轻内存泄漏
什么会导致java进程大大超过Xmx或Xss限制?
是否会导致内存泄漏?
什么可能会导致ShellExecute返回SE_ERR_OOM(错误8)?
在Windows中,我怎样才能用`new`replace`GlobalAlloc`?
在C#中声明一个variables为“private”是否可以保护窗口中的内存不被内存扫描器访问?
ColdFusion可以访问Windows内存值
所有可写和可执行程序内存段types
你有很多限制。
复用。 这应该不是一个问题,如果你的应用程序使用一个体面的后端。 Libev声称在100,000个文件描述符下复用了350us的延迟。
应用速度。 每个请求在这个比例(相当低)下1ms的应用程序延迟将花费将近两分钟的时间在最佳条件下处理100,000个请求。
带宽。 根据您的应用程序和协议的效率,这可能是一个问题。 你说这是一个鱿鱼代理…如果你是代理网站:没有缓存请求一个网站的客户端可以接收从几百KB到几MB的任何地方。 如果每个客户端的平均整页请求量是500KB,那么每秒2000个请求就可以实现全千兆连接。 这可能是你的限制因素。
2000文件描述符是一个相当小的数量。 我已经看到,像Python这样的语言中的简单应用可以扩展到单个处理器内核上的超过3000个活动连接,而不会出现延迟。
你可以使用诸如在多台客户机上运行的apachebench软件来测试你的squid代理,以得到一些实际的数字。 把你的文件描述符限制到2000+是很容易的,看看会发生什么,以及它是否会在之后产生影响。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。