Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #108677 > unrolled thread

Re: OT: limit number of connections from browser to my server?

Started byjmp <jeanmichel@sequans.com>
First post2016-05-16 19:26 +0200
Last post2016-05-16 19:26 +0200
Articles 1 — 1 participant

Back to article view | Back to comp.lang.python

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: OT: limit number of connections from browser to my server? jmp <jeanmichel@sequans.com> - 2016-05-16 19:26 +0200

#108677 — Re: OT: limit number of connections from browser to my server?

Fromjmp <jeanmichel@sequans.com>
Date2016-05-16 19:26 +0200
SubjectRe: OT: limit number of connections from browser to my server?
Message-ID<mailman.23.1463419637.19823.python-list@python.org>
On 05/16/2016 06:06 PM, Grant Edwards wrote:
> This is not Python specific, though I'm turning to Python to do some
> experimentation and to try to prototype a solution.
>
> Is there any way to limit the number of connections a browser uses to
> download a web page?  Browser writers seems to assume that all https
> servers are massively parallel server farms with hardware crypto
> support.
>
> So, when a browser wants to load a page that has the main html file, a
> css file, a javascript library or two, and a few icons and background
> bitmaps, they browser opens up a half-dozen SSL connections in
> parallel.
>
> That's fine when the server is Facebook's server farm.
>
> But when it's a small embedded device running at 40MHz with a
> single-threaded web server and software crypto, it turns a 2-second
> page load time into a 15-second page load time.
>
> When we first added https support years ago, this wasn't a problem.  A
> browser would open _an_ SSL connection (handshake time around 2
> seconds), and then send mutliple HTTP requests over that connection to
> grab a half-dozen files.  Each HTTP request would take a few tens of
> milliseconds, and life was good.
>
> Now that 2-second page load takes up to 10-15 seconds because of all
> the SSL connection setup overhead involved in handling a half-dozen
> "parallel" connections.
>
> I was _hoping_ there was an HTTP header or HTML meta tag that could be
> used to smack the browser with a clue bat, but there doesn't seem to
> be.  [Please tell me I'm wrong...]
>
> Some browsers used to have a global "max parallel connections" setting
> that the user could control, but a) that seems to be gone from recent
> versions of browsers I've looked at, and b) we can't ask customers to
> change that setting just for the benefit of our devices.
>
> So now I'm going to set up a simple Python HTTP server to try some
> other approaches:
>
>    1) Only allow the listening socket to accept 1 connection at a time.
>
>    2) Accept the TCP connection, but don't allow the SSL handshaking to
>       start on the "extra" connections.
>
>    3) ???
>
>    4) Profits!
>
> Any ideas?
>

Have you considered upgrading the device with a recent CPU ? Or is it 
completely out of the picture ?

Depending on what you are selling, it may be actually cheaper than 
spending time trying to make it work.

You could also "externalize" the web service, a 35$ raspberry pi would 
do it. Of course I do realize that everything I said may not make any 
sense, we'd need to know a little bit more about the "device". If 35$ 
double the price, that may not be a good idea.

That being said, your first idea seems also a good lead, have your 
server refuse more than one connection.

jm


[toc] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web