<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 21, 2017 at 11:57 AM, Paul DeBruicker <span dir="ltr"><<a href="mailto:pdebruic@gmail.com" target="_blank">pdebruic@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">As far as I know there isn't HTTP/2 support available in any of the Smalltalk<br>
HTTP clients but as the gems can only process one request at a time it<br>
shouldn't matter.  Do HTTP/2 to your nginx, then split those requests among<br>
your gems round robin.</blockquote><div><br></div><div><br></div><div>Yeah, I did that and it worked! Not sure if it helped for this particular case but using HTTP2 is worth nonetheless.</div><div>For the record, I followed this guide for CentOS 7: </div><div><br></div><div><a href="https://medium.com/@karljohnson/nginx-more-get-http-2-with-alpn-pagespeed-modsecurity-and-much-more-in-one-single-package-7d28a44d1854#.n5d4viwek">https://medium.com/@karljohnson/nginx-more-get-http-2-with-alpn-pagespeed-modsecurity-and-much-more-in-one-single-package-7d28a44d1854#.n5d4viwek</a><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">  Or I think if you pay for nginx you can choose which<br>
backend to send a request to based on its busy-ness.<br></blockquote><div><br></div><div>Yes, I am already using that stragegy (see least_conn below)</div><div><br></div><div><div><br></div><div>upstream xxx</div><div>{</div><div><b>least_conn;</b></div><div>server localhost:40210;</div><div>server localhost:40211;</div><div>server localhost:40212;</div><div>server localhost:40213;</div><div>server localhost:40214;</div><div>server localhost:40215;</div><div>server localhost:40216;</div><div>server localhost:40217;</div><div>server localhost:40218;</div><div>server localhost:40219;</div><div>server localhost:40220;</div><div>}</div><div><br></div></div><div> </div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
<br>
<br>
<br>
<br>
Mariano Martinez Peck wrote<br>
> On Mon, Mar 20, 2017 at 10:11 PM, Paul DeBruicker &lt;<br>
<br>
> pdebruic@<br>
<br>
> &gt;<br>
<div><div class="gmail-h5">> wrote:<br>
><br>
>> Are you using HTTP/2 in your nginx config?<br>
>> <a href="https://en.wikipedia.org/wiki/HTTP/2" rel="noreferrer" target="_blank">https://en.wikipedia.org/wiki/<wbr>HTTP/2</a>  It both multiplexes & pipelines<br>
>> requests so the browser's limits have less, if no effect.<br>
>><br>
>><br>
> Yes, this is very interesting idea. Do you have such a setup working with<br>
> Seaside and GemStone?<br>
> I am compiling now newer version of nginx with ALPN support and correct<br>
> version of SSL on CentOS7.<br>
> But I am not sure what else must be done to close the loop so that to be<br>
> sure HTTP2 is used everywhere.<br>
> Do I need to do something on the Seaside adaptors?<br>
><br>
><br>
><br>
>><br>
>><br>
>> Could also maybe adapt the functionality of the lazy-loading code that is<br>
>> sometimes used for images.  If the report isn't on the screen & hasn't<br>
>> been<br>
>> scrolled to do you really need it in the DOM?<br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>> Mariano Martinez Peck wrote<br>
>> > Hi guys,<br>
>> ><br>
>> > In my app I have one scenario where we render huge reports. These<br>
>> reports<br>
>> > could have say... 20/30 large tables as well as quite some charts and<br>
>> some<br>
>> > other report elements.<br>
>> ><br>
>> > Previously we were using a single ajax request to generate the whole<br>
>> > report<br>
>> > html but that was a pain because client machine would have a really<br>
>> large<br>
>> > TTFB. So I was wasting CPU and network at client machine while waiting.<br>
>> ><br>
>> > What we did now is that each report element renders a title + spinning<br>
>> > while and does an ajax request which, on success does a #replaceWith:<br>
>> > with<br>
>> > the real contents. The idea is to show the report as soon as possible<br>
>> and<br>
>> > start replacing spinning wheels with real contents as soon as content<br>
>> is<br>
>> > ready. That way I maximize CPU and network on client side.<br>
>> ><br>
>> > The second thing is that making this on AJAX calls, that would end up<br>
>> on<br>
>> > different Gems on my GemStone which was very performant. I have 10<br>
>> Seaside<br>
>> > gems on a 8 cores CPU so all those AJAX request were load balanced via<br>
>> > nginx over the 10 seaside gems, which on the other hand were split<br>
>> across<br>
>> > all cores. Previously, with a single request, only one Gem took care<br>
>> and<br>
>> > hence only one CPU core was used.<br>
>> ><br>
>> > This change was nice and improved performance. However, when I analyze<br>
>> > requests, I see that I have many that are "Stalled". And yeah, on<br>
>> Chrome,<br>
>> > they are all stalled when there is more than 6 requests to the same<br>
>> > location.<br>
>> ><br>
>> > To conclude, it looks like i am doing what is called "Loading page<br>
>> content<br>
>> > with many Ajax requests" [1]. But I still don't find an easy<br>
>> workaround.<br>
>> I<br>
>> > would like to be able to use my 10 Gems over the 8 CPU cores....<br>
>> ><br>
>> > Any idea?<br>
>> ><br>
>> > Thanks in advance,<br>
>> ><br>
>> ><br>
>> > [1]<br>
>> > <a href="http://sgdev-blog.blogspot.com.ar/2014/01/maximum-" rel="noreferrer" target="_blank">http://sgdev-blog.blogspot.<wbr>com.ar/2014/01/maximum-</a><br>
>> concurrent-connection-to-same.<wbr>html<br>
>> ><br>
>> ><br>
>> > --<br>
>> > Mariano<br>
>> > <a href="http://marianopeck.wordpress.com" rel="noreferrer" target="_blank">http://marianopeck.wordpress.<wbr>com</a><br>
>> ><br>
>> > ______________________________<wbr>_________________<br>
>> > seaside mailing list<br>
>><br>
>> > seaside@.squeakfoundation<br>
>><br>
>> > <a href="http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside" rel="noreferrer" target="_blank">http://lists.squeakfoundation.<wbr>org/cgi-bin/mailman/listinfo/<wbr>seaside</a><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>> --<br>
>> View this message in context: <a href="http://forum.world.st/" rel="noreferrer" target="_blank">http://forum.world.st/</a><br>
>> Workaround-to-browser-maximum-<wbr>connection-limit-<wbr>tp4939444p4939450.html<br>
>> Sent from the Seaside General mailing list archive at Nabble.com.<br>
>> ______________________________<wbr>_________________<br>
>> seaside mailing list<br>
>><br>
<br>
</div></div>> seaside@.squeakfoundation<br>
<span class="gmail-"><br>
>> <a href="http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside" rel="noreferrer" target="_blank">http://lists.squeakfoundation.<wbr>org/cgi-bin/mailman/listinfo/<wbr>seaside</a><br>
>><br>
><br>
><br>
><br>
> --<br>
> Mariano<br>
> <a href="http://marianopeck.wordpress.com" rel="noreferrer" target="_blank">http://marianopeck.wordpress.<wbr>com</a><br>
><br>
</span><span class="gmail-">> ______________________________<wbr>_________________<br>
> seaside mailing list<br>
<br>
> seaside@.squeakfoundation<br>
<br>
> <a href="http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside" rel="noreferrer" target="_blank">http://lists.squeakfoundation.<wbr>org/cgi-bin/mailman/listinfo/<wbr>seaside</a><br>
<br>
<br>
<br>
<br>
<br>
--<br>
</span>View this message in context: <a href="http://forum.world.st/Workaround-to-browser-maximum-connection-limit-tp4939444p4939510.html" rel="noreferrer" target="_blank">http://forum.world.st/<wbr>Workaround-to-browser-maximum-<wbr>connection-limit-<wbr>tp4939444p4939510.html</a><br>
<div class="gmail-HOEnZb"><div class="gmail-h5">Sent from the Seaside General mailing list archive at Nabble.com.<br>
______________________________<wbr>_________________<br>
seaside mailing list<br>
<a href="mailto:seaside@lists.squeakfoundation.org">seaside@lists.<wbr>squeakfoundation.org</a><br>
<a href="http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside" rel="noreferrer" target="_blank">http://lists.squeakfoundation.<wbr>org/cgi-bin/mailman/listinfo/<wbr>seaside</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">Mariano<br><a href="http://marianopeck.wordpress.com" target="_blank">http://marianopeck.wordpress.com</a><br></div>
</div></div>