Ok so multiplexed=False, updated Flup to the latest version in
Mercurial repository, run Spawn-fcgi with default values (so -C 0 -F
1). I'll do some tests...
tnx

On 1 Feb, 09:59, xiaobing jiang <[email protected]> wrote:
> 3. False
>     in my test and code review:
>     1. nginx doesn't support mutilplexing.
>     2. when using mutilplexing , flup will create 2 thread ( one is in
> thread pool, another is in _start_request).
>         because flup using thread.start_new_thread, and webpy using
> threading.current_thread. so here are many
>         DummyThread  object in threading module. it don't free memory.
>         from threading module source:
>         # Dummy thread class to represent threads not started here.
>         # These aren't garbage collected when they die, nor can they
> be waited for.
>         # If they invoke anything in threading.py that calls
> current_thread(), they
>         # leave an entry in the _active dict forever after.
>         # Their purpose is to return *something* from current_thread().
>         # They are marked as daemon threads so we won't wait for them
>         # when we exit (conform previous semantics).
>
> 4. maybe maxSpare.
>
> another:
> 1. careful flup bug, fix in trunk but not released.
> 2. if using mysql-python, it leaks 
> memory.https://sourceforge.net/tracker/?func=detail&aid=1464563&group_id=223...
>
> 在 2010年2月1日 下午4:30,skp_999 <[email protected]> 写道:
>
> > I'm on a dedicated server, no root access but I can install any app
> > (webserver, ...). I'm not really concerned about speed (I share the
> > server with other people so my concerns are cpu&mem) but I want to
> > config Webpy in the best way. So a little recap:
>
> > 1. Nginx with one master process and one worker (I don't want to
> > change this)
> > 2. Spawn-fcgi relevant options are:
>
> >     -C <children>  (PHP only) numbers of childs to spawn (default:
> > not setting
> >          the PHP_FCGI_CHILDREN environment variable - PHP defaults to
> > 0)
> >     -F <children>  number of children to fork (default 1)
> >     -n  no fork (for daemontools)
>
> >   So C seems useless since I use Python (correct?). So -F and -n ?
> > 3. Multiplexing True or False ?
> > 4. Other options to pass to Flup (other than Multiplexing) ?
>
> > tnx
>
> > On 1 Feb, 03:38, Graham Dumpleton <[email protected]> wrote:
> >> On Feb 1, 1:24 pm, David Shieh <[email protected]> wrote:
>
> >> > On 2月1日, 上午9时47分, Graham Dumpleton <[email protected]> wrote:> 
> >> > On Feb 1, 12:39 pm, David Shieh <[email protected]> wrote:
>
> >> > > > 1. You should use -C 5 or even more, like -C 10
> >> > > > 2. I think you should use multiplexed=True
>
> >> > > Anecdotal evidence from past discussions elsewhere suggests that using
> >> > > multiplexing is a bad idea and actually slows things down. Pretty well
> >> > > all FASTCGI hosting mechanisms don't support multiplexing anyway, and
> >> > > that is part of the issue. That is, you are enabling a feature that
> >> > > will not do anything and the overhead of it being used in an
> >> > > environment where it isn't supported seems to slow things down.
>
> >> > I didn't do any test for this, and even don't use this parameter, I
> >> > just thought it will be better.
> >> > And as a matter of fact like you said, it's a bad solution. It's my
> >> > fault, I am sorry.
>
> >> For the record, my feeling on the multiplexing option is that it
> >> wouldn't even necessarily help with performance anyway. This is
> >> because you are trying to shove more data, ie., for multiple requests,
> >> done the same connection. If the reader at either end blocks, then one
> >> would have to think that you are therefore blocking the flow of data
> >> for all concurrent requests across that multiplexed connections.
>
> >> As such, use of multiplexing may, if supported by hosting mechanism,
> >> make sense if concerned about resource usage, ie., total number of
> >> file descriptors in use across a system, but as far as performance
> >> goes, from a technical standpoint I can't see how it would help one
> >> bit.
>
> >> Graham
>
> >> > Thanks for mentioning, man.
>
> >> > > Graham
>
> >> > > > 3. If you use some different ports to run web.py, your nginx will a
> >> > > > proxy server then. And I do think this will make your app even 
> >> > > > faster.
>
> >> > > > BTW, I don't write any wsgi.py for webpy, just app.py for my
> >> > > > application. Is this wsgi.py part of web.py or you wrote it?
>
> >> > > > On 1月30日, 下午4时22分, skp_999 <[email protected]> wrote:
>
> >> > > > > I run my webpy apps with the following configuration (based on 
> >> > > > > infos
> >> > > > > found athttp://webpy.org/cookbook/fastcgi-nginx):
>
> >> > > > > relevant part of my nginx.conf (nginx runs with 1 master and 1
> >> > > > > worker):
> >> > > > > -----
> >> > > > > location / {
> >> > > > >     include fastcgi_params;
> >> > > > >     fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
> >> > > > >     fastcgi_param PATH_INFO $fastcgi_script_name;
> >> > > > >     fastcgi_pass 127.0.0.1:8100;}
>
> >> > > > > -----
>
> >> > > > > how I spawn my fcgi processes:
> >> > > > > -----
> >> > > > > spawn-fcgi -C 5 -f /path/to/myapp.py -a 127.0.0.1 -p 8100 -P 
> >> > > > > /path/to/
> >> > > > > myapppid.pid
> >> > > > > -----
>
> >> > > > > myapp.py
> >> > > > > -----
> >> > > > > #!/usr/bin/env python
> >> > > > > # -*- coding: utf-8 -*-
>
> >> > > > > import web
>
> >> > > > > urls = ("/.*", "hello")
> >> > > > > app = web.application(urls, globals())
>
> >> > > > > class hello:
> >> > > > >     def GET(self):
> >> > > > >         return 'Hello, world!'
>
> >> > > > > if __name__ == "__main__":
> >> > > > >         web.wsgi.runwsgi = lambda func, addr = None: 
> >> > > > > web.wsgi.runfcgi(func,
> >> > > > > addr)
> >> > > > >         app.run()
> >> > > > > ------
>
> >> > > > > wsgi.py of Webpy
> >> > > > > -----
> >> > > > > def runfcgi(func, addr=('localhost', 8000)):
> >> > > > >     """Runs a WSGI function as a FastCGI server."""
> >> > > > >     import flup.server.fcgi as flups
> >> > > > >     return flups.WSGIServer(func, multiplexed=True,
> >> > > > > bindAddress=addr).run()
> >> > > > > ----
>
> >> > > > > Now my questions:
>
> >> > > > > 1) Should I spawn 1 or more myapp.py processes  (with '-C 5' I 
> >> > > > > have 5
> >> > > > > workers) ?
>
> >> > > > > 2) Should I run flups with multiplexed=True or False (and/or other
> >> > > > > options) ?
>
> >> > > > > 3) Do I need a different fcgi port for each of my webpy apps (I'm
> >> > > > > talking about port 8000 in wsgi.py) ?
>
> >> > > > > BTW Right now my env variables report :
> >> > > > >     wsgi.multiprocess: False
> >> > > > >     wsgi.multithread: True
> >> > > > > but with 'top' I see also my 5 processes
>
> >> > > > > tnx
>
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "web.py" 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 
> > athttp://groups.google.com/group/webpy?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"web.py" 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/webpy?hl=en.

Reply via email to