In 2007, I wrote my first web application using Smalltalk/Seaside. I chose 
Seaside because it was a very easy-to-learn, easy-to-program, 
easy-to-deploy, highly productive, self-contained all-in-one web framework. 
(It still is, today.) Unfortunately, web2py hadn't been born yet, but 
clearly the two frameworks had similar goals. (Born in 2002, Seaside has 5 
years over web2py.)

I deployed the Seaside app under Apache on the same hardware that I'm using 
today for web2py. Yes, my 2.4GHz quad-core Xeon Dell server with 4GB RAM is 
over 7 years old!!

Recently, I switched over to web2py because I had heard so many good things 
about it. I can now say that web2py is far superior to Seaside. It's even 
more easy-to-learn and easy-to-program; it's even more productive. And 
Seaside was pretty darn good in this respect!

I believe web2py is the best available web framework in the world today, 
regardless of language (ie, Java, Ruby, PHP, etc.). I am 100% in agreement 
with its philosophy and goals.

Please, keep up the good work!


On Wednesday, 19 March 2014 07:27:54 UTC-4, horridohobbyist wrote:
>
> Yes, "processes=3" and "threads=1".
>
> I tried "processes=1" and "threads=3", and performance was still 10x bad. 
> So I guess that answers my question:  the threads parameter is not helpful.
>
>
> On Wednesday, 19 March 2014 05:24:01 UTC-4, Tim Richardson wrote:
>>
>> Did you explicitly set the number of threads as well? By default you get 
>> 15 threads per process. The documentation implies that this is a hard 
>> limit, but I'm not sure.
>> Maybe you have simply found a bottleneck in threads. Did you also try 
>> increasing the number of threads instead of adding more processes? 
>> Multi-threaded apache is supposed to be faster than multi-process apache 
>> under real load (i.e. multiple users) because starting (and switching) 
>> processes is expensive in time and memory.*
>> So any conclusion that you need more processes is dubious, I think. I 
>> can't recall how many simultaneous users your benchmarking is testing. 
>> Bear in mind that the fastest servers, the greenlet or co-operative async 
>> servers, are not only limited to one process, but even to one thread. 
>>
>> http://nichol.as/benchmark-of-python-web-servers
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> On Wednesday, 19 March 2014 14:25:47 UTC+11, horridohobbyist wrote:
>>>
>>> I shall do that. Thanks.
>>>
>>> With the knowledge about "processes=", I've tuned my actual Linux server 
>>> to eliminate the 10x slowdown. As it turns out, for my 2.4GHz quad-core 
>>> Xeon with 4GB RAM, "processes=2" works best. I found that any other value 
>>> (3, 4, 5) gave very inconsistent results–sometimes I would get 1x (the 
>>> ideal) and sometimes I would get 10x. Very bizarre.
>>>
>>> "processes=2" is counter-intuitive. After all, I have 4 cores. Why 
>>> shouldn't "processes=4" be good?
>>>
>>> Anyway, not only is the shipping code fast, but I find that my overall 
>>> web2py app feels a lot snappier. Is it just my imagination?
>>>
>>> If "processes=2" is boosting the speed of Python in general, then you 
>>> would expect all of web2py to benefit. So maybe it's not my imagination.
>>>
>>> Anyway, the takeaway, I think, is that you must tune the Apache 
>>> configuration for the particular server hardware that you have. The default 
>>> "processes=1" is not good enough.
>>>
>>>
>>> On Tuesday, 18 March 2014 22:37:58 UTC-4, Massimo Di Pierro wrote:
>>>>
>>>> Thank you for all your tests. You should write a summary of your 
>>>> results with recommendations for Apache users.
>>>>
>>>> On Tuesday, 18 March 2014 19:44:29 UTC-5, horridohobbyist wrote:
>>>>>
>>>>> Done. With processes=3, the 10x discrepancy is eliminated! (And this 
>>>>> is in a Linux VM configured for 1 CPU.)
>>>>>
>>>>>
>>>>> On Tuesday, 18 March 2014 16:26:24 UTC-4, Michele Comitini wrote:
>>>>>>
>>>>>> > WSGIDaemonProcess hello user=www-data group=www-data threads=5 
>>>>>>
>>>>>> with web2py try the following instead: 
>>>>>> WSGIDaemonProcess hello user=www-data group=www-data 
>>>>>> processes=<number 
>>>>>> of cores + 1> threads=(0 or 1) 
>>>>>>
>>>>>> If it's faster, then the GIL must be the cause.  flask by default has 
>>>>>> much less features active (session for instance) 
>>>>>>
>>>>>>
>>>>>>
>>>>>> 2014-03-18 21:04 GMT+01:00 horridohobbyist <horrido...@gmail.com>: 
>>>>>> > I took the shipping code that I ran in Flask (without Apache) and 
>>>>>> adapted it 
>>>>>> > to run under Apache as a Flask app. That way, I'm comparing apples 
>>>>>> to 
>>>>>> > apples. I'm comparing the performance of the shipping code between 
>>>>>> Flask and 
>>>>>> > web2py. 
>>>>>> > 
>>>>>> > Below, I've included the 'default' file from 
>>>>>> Apache2/sites-available for 
>>>>>> > Flask. 
>>>>>> > 
>>>>>> > Basically, the code in Flask executes 10x faster than the same code 
>>>>>> in 
>>>>>> > web2py. So my question is:  if Apache is at fault for the web2py 
>>>>>> app's slow 
>>>>>> > performance, why doesn't Apache hurt the Flask app's performance? 
>>>>>> (This 
>>>>>> > doesn't seem to be related to GIL or WSGI.) 
>>>>>> > 
>>>>>> > 
>>>>>> > <VirtualHost *:80> 
>>>>>> >   ServerName 10.211.55.7 
>>>>>> >   WSGIDaemonProcess hello user=www-data group=www-data threads=5 
>>>>>> >   WSGIScriptAlias / /home/richard/welcome/hello.wsgi 
>>>>>> > 
>>>>>> >   <Directory /home/richard/welcome> 
>>>>>> >     Order Allow,Deny 
>>>>>> >     Allow from all 
>>>>>> >   </Directory> 
>>>>>> > </VirtualHost> 
>>>>>> > 
>>>>>> > -- 
>>>>>> > Resources: 
>>>>>> > - http://web2py.com 
>>>>>> > - http://web2py.com/book (Documentation) 
>>>>>> > - http://github.com/web2py/web2py (Source code) 
>>>>>> > - https://code.google.com/p/web2py/issues/list (Report Issues) 
>>>>>> > --- 
>>>>>> > You received this message because you are subscribed to the Google 
>>>>>> Groups 
>>>>>> > "web2py-users" group. 
>>>>>> > To unsubscribe from this group and stop receiving emails from it, 
>>>>>> send an 
>>>>>> > email to web2py+un...@googlegroups.com. 
>>>>>> > For more options, visit https://groups.google.com/d/optout. 
>>>>>>
>>>>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to