我运行一个专用的代理服务器与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+是很容易的,看看会发生什么,以及它是否会在之后产生影响。
总结以上是内存溢出为你收集整理的Linux中文件描述符的理论极限全部内容,希望文章能够帮你解决Linux中文件描述符的理论极限所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)