Wow! Great write-up. I think this has applicability in a number of my other projects. :-)
On Tue, Mar 24, 2009 at 8:53 PM, Daniel Mueller <[email protected]>wrote: > > I'm not sure that this is of any help or even applies to lift, but we > had once a very similar situation with a corporate application. > Difference was that the problem occurred when you were working slower. > Here's the description of the problem and what the reason was. When we > ran our application in on dev servers, everything was working fine, > never any problems, never the server unavailable message. Even on the > test servers for the client there was never any problem and everything > was working fine, even though this time the app was using HTTPS. When > we put the application into production (HTTPS as well), we received > complaints similar to yours. Ok, differences between dev/test and > prod? Almost none, server setup the same (tomcat/apache at the time), > same OS, same build. Differences were only in network routing and that > the production was using a loadbalancer. Now that load balancer was a > pretty expensive piece of hardware, we used sticky sessions and the > app was built that it should even be able to handle session failover > gracefully (only cashing stuff in the session). And strangely we still > couldn't reproduce the bug even though the allowed us to test in the > production environment... > Now the fun started. It took some time to actually reproduce the bug, > because it happened only if you waited long enough on a page that is > using AJAX. It took a couple of minutes of waiting (doing nothing that > triggers AJAX) on a page before you could get the server unavailable > message when starting to use AJAX again which had to timeout as well > first. The wait time is not completely unreasonable (if you got a > complex form to fill, that's a reasonable time, depending on how your > site is structured) and after that, the AJAX part of the page was dead > (only reload could get you going again). > After being able to reproduce the bug, we set to find the source of > the problem. It turned out that the following things happened: Apache > has a configured connection pool and a configured connection keepalive > (sent in HTTP response header). It doesn't honor the keepalive though, > as long as you have enough spare connections in the pool (it'll simply > keep the timed out connections active). The loadbalancer on the other > hand is not that friendly and shuts the connections down after the > configured keepalive times out. That's the reason why it never showed > in dev and test and only with the loadbalancer (which is advertised as > being transparent) in place. > Ok, interesting story so far, but why does IE6 barf on it, connection > closing shouldn't be the end of the world, it happens often enough. > The problem is that IE6 automatic removal of SSLd keepalive > connections is seriously broken. It actually tries to reuse timed out > connections from the internal connection pool (IIRC, also see [1], or > google), which will not get you anywhere on the server, because the > connection has been shut down. > Resolution for us was to set the keepalive to a high value (half an > hour or so, the default is 300/5 minutes). This was also partially > because we were not allowed to touch the configuration of the > loadbalancer. [1] describes a different solution. > To find the problem we used SysInternals TCPView (free) to find out > what the issue was on the network, but that got us only that far. The > missing piece was SysInternals TDIMon (free), that showed us IE6s > internal connection pool events. TDIMon seems to be discontinued (at > least I couldn't find it on the site), and I haven't had to use it in > a while, so I don't know which application is actually filling the gap > or whether you can download it somewhere else (I don't know if the old > version is Vista compatible but it worked fine on XP). > > Hope that helps and that you find a solution (that was one of the > harder bugs I ever had to track down, thus the extensive writeup). > > Cheers, > -D > > [1] http://extjs.com/forum/showthread.php?t=45673 > [2] http://technet.microsoft.com/en-us/sysinternals/default.aspx > > On Mar 25, 2:22 am, "Charles F. Munat" <[email protected]> wrote: > > I have a survey online that updates the server via AJAX when individual > > form fields are blurred. Works beautifully in Firefox, Opera, IE7, etc. > > > > But in IE6 there are some serious problems. Unfortunately, the users of > > this survey are corporate, and some of them are forced to use IE6 (DEATH > > to lazy sysadmins!). What happens is that the saves sometimes work, and > > other times do not. Occasionally, a "server unavailable message" pops > > up, and after that nothing seems to work. I have a couple of customers > > who are very seriously pissed off because they've had to re-enter data > > four and five times. > > > > I suspect that this has something to do with IE6 limitations wrt number > > of browser connections available to AJAX. If they slow down a little, > > the problem diminishes. > > > > Anyone ever try something like this before? Anyone have any suggestions? > > Why only IE6? Is there a workaround? (I can't afford to rebuild the > > whole thing for one or two people.) > > > > Thanks! > > > > Chas. > > > > -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Git some: http://github.com/dpp --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---
