Re: [Pound Mailing List] How to survive long answers from a backend
Conor McCarthy <[email protected]>
| Newsgroups | gmane.comp.web.pound.general |
|---|---|
| Message-ID | <[email protected]> |
On 9 October 2013 15:42, Peter Shaw <unthoughted-gM/[email protected]> wrote: > Hi, > > its me again. > Sorry if i bother the list, but this issue is very important for me and i > definitely need your help! I can figure out whats happening, or how i > configure pound the right way. > > I have one call in my Application that is sending data over a time period > of 40-120 seconds. I don't want alywas wait 120 Sec till pound terminates > if no data are coming back from the servers. But i do want configure pound > to keep the connection open when data from the backend is sending too the > client. How long that ever takes: if data is responding: keep it open. > > Is this possible? > > This type of service is effectively incompatible with a normal HTTP load balancer. (Ideally you should consider asynchronous processing, or some other way to decouple your application logic from the way a HTTP connection behaves.) I have worked around similar issues (long-running CGI) by duplicating Service and BackEnd(s) stanzas, and adjusting the Timeout in each Backend: ListenHTTP ... # slow service Service URL /cgi-bin/slowurl Backend Address 1.2.3.4 Port 80 Timeout 240 End End # normal service Service Backend Address 1.2.3.4 Port 80 Timeout 15 End End Obviously this is not ideal... You should also make sure to use a recent pound if you want to use more than one "URL" directives. "HeadRequire" or "HeadDeny" may work better, assuming that you have some way of identifying slow request in advance. You might also want to set the "Client" timeout in your listener. C. > Thanks a lot for any kind of ideas. > > Peter > --- > ps > > B. unthoughted.wordpress.com > T. @peter_shaw > F. facebook.com/PeterDunstonShaw > G. github.com/petershaw > > On Oct 4, 2013, at 6:04 PM, Peter Shaw <unthoughted-gM/[email protected]> wrote: > > > > > Hi folks, > > > > Why a request from the browser fails, but not from curl on the terminal > everything works find? - Or ask the other way around: how can i do long > answer responses? > > > > This is my setup: > > Pound is configured with > > Alive 2 > > ConnTO 30 > > Client 115 > > TimeOut 30 > > > > And a wrote this demo-script: > > > > -------------------------- > > #!/usr/bin/perl > > > > $| = 1; > > > > print "Content-Type: text/html\n\n"; > > > > print "." x 1024; > > > > for(1..6){ > > sleep(10); > > print ". \n"; > > } > > > > print "done."; > > -------------------------- > > > > in curl i get the whole result: > > # curl http://vm-box.dev/cgi-bin/hello.pl > > > ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. > > . > > . > > . > > . > > . > > done.# > > > > > > But in the browser, pound is terminating the session after exact 30 > secunds and the log tells me: > > e500 for 192.168.56.1 response error read from 127.0.0.1:8000/GET/cgi-bin/ > hello.pl HTTP/1.1: Connection timed out (30.009 secs) > > > > First, i do not understand why it works with curl. Second - and more > importend - how can i pass a long result throw pound? > > > > > > Thanx a lot for any thoughts. > > ps > > > > > > > > -- > > To unsubscribe send an email with subject unsubscribe to [email protected]. > > Please contact [email protected] for questions. > > > -- > To unsubscribe send an email with subject unsubscribe to [email protected] > Please contact [email protected] for questions. >