限制服务器端的并发连接数?

时间:2009-04-17 19:32:50

标签: browser webserver concurrency connection

我正在编写自己的网络服务器,但我还没有正确处理并发连接。由于不恰当地处理并发连接,我得到了大量的页面加载延迟(我对SYN做出响应,但是我以某种方式丢失了GET数据包。浏览器在一段时间后重试,但需要3秒!)我试图找出是否存在指示浏览器同时停止加载的方法,因为调试这需要很长时间。网络服务器非常简单,不会公开,也不是这个应用程序的主要目的,这就是为什么我愿意以这种方式偷工减料。

将并发连接限制为1会很好,因为使用IE的注册表黑客修改该参数并使用about:config for Firefox可以使事情完美运行。

任何其他解决方法的想法也会很有用。我能想到的一对夫妇:

1 - 指示浏览器缓存所有没有过期的内容,以便缓慢加载(.js,.css和图像文件)只发生一次。我可以在文件的末尾附加一个校验和(img src =“/ img / blah.png?12345678”),以确保我是否更新了文件,它已正确重新加载。

2 - 添加.js和.css以使用.html文件加载内联 - 但这仍然无法修复图像问题,而且无论如何都只是丑陋。

2 个答案:

答案 0 :(得分:0)

我不相信可以告诉像Firefox这样的浏览器不能同时加载,至少不能通过某些http标头或其他东西为你的用户加载。

答案 1 :(得分:0)

所以我从来没有找到办法做到这一点。

我的根本问题是太多请求进入并且在emac ram中溢出了我有限的接收缓冲区。溢出的接收缓冲区=丢弃的数据包。解决方案是将所有.js和所有.css文件合并为1个.js和1个.css文件,以便将请求关闭。我将所有图像,js和css页面设置为一年到期。 html页面设置为立即过期。我编写了一个perl脚本来将md5校验和附加到文件中,以便重新获取更改的文件。现在很棒。在第一次加载缓存所有内容后,页面会立即加载。