Just one more quick note. It has been quite a while since running these tests. The apache processes have tampered down to the original... however mod_wsgi is still sitting at 95MB for some odd reason. uWSGI has gone down to its original footprint.
-Thadeus On Fri, Feb 26, 2010 at 1:22 AM, Thadeus Burgess <thade...@thadeusb.com> wrote: > typo on cherokee+uwsgi before testing total should be 31064 > > > -Thadeus > > > > > > On Fri, Feb 26, 2010 at 1:21 AM, Thadeus Burgess <thade...@thadeusb.com> > wrote: >> I did some interesting ab testing with cherokee / apache. Both >> installed on the same server, running the exact same web2py app. My >> apache only runs mod_wsgi, no ruby on this server! >> >> At server bootup, visiting the homepage of the app once for apache and >> once for cherokee, this is the RSS footprint as to ps aux. >> >> 5296 Cherokee >> 25768 uWSGI >> >> Total: 49948 Cherokee + uWSGI >> >> 56744 Apache >> 33672 mod_wsgi >> >> Total: 90416 Apache + mod_wsgi >> >> Now after running the following command (thadeusb.com is apache, >> thadeusb.com:50002 is cherokee) >> >> ab -n 200 -c 15 http://thadeusb.com/weblog && ab -n 200 -c 15 >> http://thadeusb.com:50002/thadeusb/weblog/ >> >> This is the RSS footprints, taken right after this small test. >> >> 5954 Cherokee >> 32120 uWSGI >> >> Total: 38074 Cherokee + uWSGI >> >> 91252 - Apache >> 95452 - mod_wsgi >> >> Total: 186704 Apache + mod_wsgi >> >> All I can say is... good bologna! What has happened to apache and >> mod_wsgi???? 186MB!!! When Cherokee was at a happy 38MB after this >> test! Preposterous! >> >> Though to give it credit, my real test here is speed, and cherokee is >> only a tad bit faster at serving web2py apps than apache, so the only >> real benefit gained by using cherokee over apache is A) Admin >> interface and B) low memory footprint. >> >> Anyways, below are the actual ps aux printouts in order. >> >> >> Before testing: >> >> root 2932 0.0 0.4 32604 1440 ? Ssl 00:38 0:00 >> /usr/sbin/cherokee --admin_child -C /etc/cherokee/cherokee.conf >> www-data 2936 0.0 1.1 212936 3856 ? Sl 00:38 0:00 >> /usr/sbin/cherokee-worker --admin_child -C /etc/cherokee/cherokee.conf >> >> www-data 2484 0.1 10.2 337836 33672 ? Sl Feb25 0:02 >> (wsgi:thadeusb) -k start >> www-data 2929 0.8 7.8 128500 25768 ? S 00:38 0:01 >> /usr/local/bin/uwsgi -s 127.0.0.1 -t 10 -M -p 1 -C -x >> /home/thadeusb/web2py/uwsgi.xml >> >> root 2467 0.0 2.0 93536 6816 ? Ss Feb25 0:00 >> /usr/sbin/apache2 -k start >> www-data 2482 0.0 1.5 232796 5160 ? Sl Feb25 0:00 >> /usr/sbin/apache2 -k start >> www-data 2483 0.0 1.5 232796 5160 ? Sl Feb25 0:00 >> /usr/sbin/apache2 -k start >> www-data 2486 0.0 1.7 93724 5692 ? S Feb25 0:00 >> /usr/sbin/apache2 -k start >> www-data 2537 0.0 1.7 93724 5652 ? S Feb25 0:00 >> /usr/sbin/apache2 -k start >> www-data 2538 0.0 1.7 93716 5652 ? S Feb25 0:00 >> /usr/sbin/apache2 -k start >> www-data 2539 0.0 1.7 93724 5712 ? S Feb25 0:00 >> /usr/sbin/apache2 -k start >> www-data 2540 0.0 1.7 93724 5688 ? S Feb25 0:00 >> /usr/sbin/apache2 -k start >> www-data 2648 0.0 1.6 93536 5516 ? S 00:02 0:00 >> /usr/sbin/apache2 -k start >> www-data 2665 0.0 1.7 93732 5656 ? S 00:04 0:00 >> /usr/sbin/apache2 -k start >> >> >> after testing >> >> root 2932 0.0 0.2 32604 692 ? Ssl 00:38 0:00 >> /usr/sbin/cherokee --admin_child -C /etc/cherokee/cherokee.conf >> www-data 2936 0.0 0.6 215112 2264 ? Sl 00:38 0:00 >> /usr/sbin/cherokee-worker --admin_child -C /etc/cherokee/cherokee.conf >> thadeusb 3826 0.0 0.2 7336 876 pts/1 R+ 01:04 0:00 grep >> cherokee >> www-data 2929 7.0 7.5 155924 32120 ? S 00:38 1:48 >> /usr/local/bin/uwsgi -s 127.0.0.1 -t 10 -M -p 1 -C -x >> /home/thadeusb/web2py/uwsgi.xml >> www-data 3345 14.2 29.0 550772 95452 ? Sl 00:59 0:36 >> (wsgi:thadeusb) -k start >> thadeusb 3828 0.0 0.2 7336 876 pts/1 R+ 01:04 0:00 grep wsgi >> root 2467 0.0 0.9 93536 3172 ? Ss Feb25 0:00 >> /usr/sbin/apache2 -k start >> www-data 2482 0.0 0.5 232796 1832 ? Sl Feb25 0:00 >> /usr/sbin/apache2 -k start >> www-data 2483 0.0 0.5 232796 1832 ? Sl Feb25 0:00 >> /usr/sbin/apache2 -k start >> www-data 2486 0.0 0.7 93724 2540 ? S Feb25 0:00 >> /usr/sbin/apache2 -k start >> www-data 2537 0.0 0.7 93724 2536 ? S Feb25 0:00 >> /usr/sbin/apache2 -k start >> www-data 2539 0.0 0.0 0 0 ? Z Feb25 0:00 >> [apache2] <defunct> >> www-data 3471 0.0 0.7 93672 2492 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3482 0.0 0.7 93672 2492 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3483 0.0 0.7 93672 2492 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3485 0.0 0.7 93672 2492 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3510 0.0 0.7 93672 2536 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3511 0.0 0.7 93672 2504 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3512 0.0 0.7 93672 2508 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3514 0.0 0.7 93672 2504 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3515 0.0 0.7 93672 2532 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3516 0.0 0.7 93672 2528 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3520 0.0 0.7 93672 2520 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3521 0.0 0.7 93672 2524 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3522 0.0 0.7 93672 2532 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3523 0.0 0.8 93672 2668 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3524 0.0 0.8 93672 2668 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3535 0.0 0.8 93672 2932 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3537 0.0 0.8 93672 2936 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3538 0.0 0.8 93672 2936 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3539 0.0 0.8 93672 2936 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3540 0.0 0.8 93672 2936 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3541 0.0 0.8 93672 2936 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3542 0.0 0.8 93672 2936 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3543 0.0 0.8 93672 2936 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3545 0.0 0.8 93672 2936 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3548 0.0 0.8 93672 2936 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3550 0.0 0.8 93672 2936 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3551 0.0 0.8 93672 2932 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3552 0.0 0.8 93672 2936 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> www-data 3555 0.0 0.8 93672 2936 ? S 01:03 0:00 >> /usr/sbin/apache2 -k start >> thadeusb 3830 0.0 0.2 7340 884 pts/1 S+ 01:04 0:00 grep apache >> >> -Thadeus >> >> >> >> >> >> On Fri, Feb 26, 2010 at 12:36 AM, Thadeus Burgess <thade...@thadeusb.com> >> wrote: >>> I was able to get the server started with my SSL pem files. It was >>> quite easily actually, I just was only putting the path to the .pem >>> file in one of the text boxes, not both. (silly me) >>> >>> Anyways, it seems that uwsgi does not pass the correct >>> request.env.remote_addr. >>> >>> This is the relative information passed to request.env using uwsgi. >>> running on SSL (firefox displays its nice little blue box around the >>> domain verifying that I am indeed using my SSL cert, oh and I had to >>> go through the whole "security exception" thing firefox likes to do) >>> >>> 'wsgi_url_scheme': 'http', 'server_name': 'thadeusb.com', 'https': 'on', >>> >>> If I alter admin to check for https==on then it works. I am wondering >>> this must be a bug in uwsgi ? >>> >>> if request.env.http_x_forwarded_for or request.env.wsgi_url_scheme\ >>> in ['https', 'HTTPS'] or request.env.https == 'on': >>> >>> Here is the full contents of request.env >>> >>> <Storage {'content_length': '0', 'http_user_agent': 'Mozilla/5.0 (X11; >>> U; Linux i686; en-US; rv:1.9.1.8) Gecko/20100214 Ubuntu/9.10 (karmic) >>> Firefox/3.5.8', 'script_name': '', 'wsgi_errors': <open file >>> 'wsgi_input', mode 'w' at 0x24a02d8>, 'server_protocol': 'HTTP/1.1', >>> 'http_cache_control': 'max-age=0', 'web2py_path': >>> '/home/thadeusb/web2py', 'http_accept': >>> 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', >>> 'wsgi_url_scheme': 'http', 'server_name': 'thadeusb.com', >>> 'remote_port': '42400', 'http_accept_language': 'en-us,en;q=0.5', >>> 'wsgi_version': (1, 0), 'request_method': 'GET', 'script_url': >>> '/admin', 'server_port': '50003', 'wsgi_input': <open file >>> 'wsgi_input', mode 'r' at 0x24a01c8>, 'server_addr': >>> '174.143.155.212', 'document_root': '/home/thadeusb/web2py', >>> 'wsgi_multithread': False, 'http_accept_charset': >>> 'ISO-8859-1,utf-8;q=0.7,*;q=0.7', 'https': 'on', 'http_cookie': >>> '__utma=226599768.612546542.1262501624.1267163250.1267163748.37; >>> __utmz=226599768.1266549488.30.3.utmcsr=sikbox.com|utmccn=(referral)|utmcmd=referral|utmcct=/; >>> session_id_init=75-27-133-239-23cdebe9-e999-47ca-be3d-57e5b64b0c96; >>> __utmb=226599768.1.10.1267163748; __utmc=226599768; >>> session_id_welcome=75-27-133-239-20d264d8-0607-4ef7-ba26-455fd1c21cbb; >>> session_id_admin=75-27-133-239-550561b2-eaa8-41b2-a962-76595c193823', >>> 'server_software': 'Cherokee/0.99.43 (Ubuntu)', 'web2py_version': >>> 'Version 1.75.4 (2010-02-18 14:55:03)\n', 'http_host': >>> 'thadeusb.com:50003', 'wsgi_multiprocess': False, 'path': >>> '/bin:/usr/bin:/sbin:/usr/sbin', 'request_uri': '/admin', >>> 'http_connection': 'keep-alive', 'wsgi_file_wrapper': <built-in >>> function uwsgi_sendfile>, 'gateway_interface': 'CGI/1.1', >>> 'http_keep_alive': '300', 'remote_addr': '75.27.133.239', >>> 'http_accept_encoding': 'gzip,deflate', 'server_signature': >>> '<address>Cherokee Web Server</address>', 'path_translated': >>> '/home/thadeusb/web2py/admin', 'query_string': '', 'wsgi_run_once': >>> False, 'path_info': '/admin'}> >>> >>> -Thadeus >>> >>> >>> >>> >>> >>> On Thu, Feb 25, 2010 at 4:46 PM, Thadeus Burgess <thade...@thadeusb.com> >>> wrote: >>>> Actually, SSL is not out of the scope of this entry. >>>> >>>> How do you expect me to access admin, or appadmin for that matter? >>>> >>>> I can't use web2py without SSL :) >>>> >>>> I have tried everything but it just keeps giving me an error saying >>>> something is wrong with my .pem file, but not telling me "what" is >>>> wrong. I even used the make-cert.sh that comes with cherokee. >>>> >>>> -Thadeus >>>> >>>> >>>> >>>> >>>> >>>> On Thu, Feb 25, 2010 at 4:42 PM, GrayMatterComputing >>>> <battledi...@gmail.com> wrote: >>>>> The guide is fine, it just needs to be Followed Step By Step without >>>>> skipping. ;) >>>>> I also figured the SSL and all was easy enough to find and, again, >>>>> outside the scope of this entry. >>>>> >>>>> On Feb 25, 4:47 pm, Thadeus Burgess <thade...@thadeusb.com> wrote: >>>>>> The following packages are not installed by the PPA... >>>>>> >>>>>> cherokee-doc >>>>>> libcherokee-mod-geoip >>>>>> libcherokee-mod-ldap >>>>>> libcherokee-mod-libssl >>>>>> libcherokee-mod-mysql >>>>>> libcherokee-mod-rrd >>>>>> libcherokee-mod-streaming >>>>>> >>>>>> Installing libcherokee-mod-libssl fixes this. >>>>>> >>>>>> Also they have a great article on creating and signing your own ssl >>>>>> key, it seems the one I am using for apache setup is invalid :) >>>>>> >>>>>> -Thadeus >>>>>> >>>>>> On Thu, Feb 25, 2010 at 3:36 PM, Thadeus Burgess <thade...@thadeusb.com> >>>>>> wrote: >>>>>> > Don't forget to hit save :)0 >>>>>> >>>>>> > And how to enable SSL, and use my self signed certificate, OR use a >>>>>> > paid for certificate? >>>>>> >>>>>> > -Thadeus >>>>>> >>>>>> > On Thu, Feb 25, 2010 at 3:25 PM, Thadeus Burgess >>>>>> > <thade...@thadeusb.com> wrote: >>>>>> >> Also, emphasis the fact of using the PPA method of installing, and >>>>>> >> provide instructions on how to do this, and a link to that page. The >>>>>> >> reason it was not working was I installed 0.99.19 instead of 0.99.43. >>>>>> >>>>>> >> -Thadeus >>>>>> >>>>>> >> On Thu, Feb 25, 2010 at 2:27 PM, Thadeus Burgess >>>>>> >> <thade...@thadeusb.com> wrote: >>>>>> >>> A couple of suggestions with the slice >>>>>> >>>>>> >>> Make a note, for buildinguwsgi, that there are makefile.py25 and >>>>>> >>> others so that you can build it for the python version that you want. >>>>>> >>>>>> >>> Do include the little ``ssh -L 9090:localhost:9090 remote_IP`` trick >>>>>> >>> to securely connect to cherokee admin. >>>>>> >>>>>> >>> I do not seeuWSGIlisted under Wizards->Platforms. I do not see it >>>>>> >>> anywhere else. >>>>>> >>>>>> >>> I can run ``uwsgi`` from command line, so it is installed correctly >>>>>> >>> in my bin. >>>>>> >>>>>> >>> The only difference is I have /web2py and /web2py/config.xml does >>>>>> >>> this matter? >>>>>> >>>>>> >>> -Thadeus >>>>>> >>>>>> >>> On Thu, Feb 25, 2010 at 10:07 AM, Thadeus Burgess >>>>>> >>> <thade...@thadeusb.com> wrote: >>>>>> >>>> Can I have cherokeeuwsgiand apache mod_wsgi running on the same >>>>>> >>>> web2py code base or should I make a copy so cherokee can execute it >>>>>> >>>> ? >>>>>> >>>>>> >>>> You are right I could run cherokee on a non-standard port for >>>>>> >>>> testing >>>>>> >>>> and always switch it over when I am happy with it! >>>>>> >>>>>> >>>> -Thadeus >>>>>> >>>>>> >>>> On Wed, Feb 24, 2010 at 11:30 PM, GrayMatterComputing >>>>>> >>>> <battledi...@gmail.com> wrote: >>>>>> >>>>> @Thadeus >>>>>> >>>>>> >>>>> For me, it was a breeze to switch from Apache to Cherokee. I was >>>>>> >>>>> happy >>>>>> >>>>> with Apache too, but I used the fact that a client wanted Cherokee >>>>>> >>>>> as >>>>>> >>>>> an opportunity to give it a try, and I am glad I did :) Besides, >>>>>> >>>>> it is >>>>>> >>>>> not like you would have to remove Apache to use Cherokee, so what >>>>>> >>>>> are >>>>>> >>>>> you waiting for (besides possibly a free hour), give it a try! >>>>>> >>>>>> >>>>> @mr.freeze and everyone else >>>>>> >>>>>> >>>>> This guide has been posted >>>>>> >>>>> athttp://www.web2pyslices.com/main/slices/take_slice/64 >>>>>> >>>>> and will appear on graymattercomputing.net in the near future. >>>>>> >>>>>> >>>>> On Feb 24, 6:05 am, "mr.freeze" <nat...@freezable.com> wrote: >>>>>> >>>>>> This is really helpful. Unfortunately, it will be lost on this >>>>>> >>>>>> mailing >>>>>> >>>>>> list in a month or so. Care to make a >>>>>> >>>>>> slice?http://www.web2pyslices.com/main/default/index >>>>>> >>>>>> >>>>>> On Feb 23, 2:56 pm, GrayMatterComputing <battledi...@gmail.com> >>>>>> >>>>>> wrote: >>>>>> >>>>>> >>>>>> > web2py with Cherokee viauWSGI: a simple, easy guide >>>>>> >>>>>> > (written specifically for Ubuntu, but applicable to all systems) >>>>>> >>>>>> > By: Evan Gray - GrayMatterComputing >>>>>> >>>>>> >>>>>> > 1) web2py >>>>>> >>>>>> > a) Download web2py (found at web2py.com) >>>>>> >>>>>> > i) Install python, if not present: sudo apt-get install python >>>>>> >>>>>> > b) Unzip (to /var/web2py) >>>>>> >>>>>> > c) Run: sudo python /var/web2py/web2py.py -a desiredpassword >>>>>> >>>>>> > d) Verify that it functions properly (by visiting >>>>>> >>>>>> > localhost:8000), >>>>>> >>>>>> > then close the server (Ctrl+C in terminal) >>>>>> >>>>>> > e) Allow server permission to web2py: sudo chown -hR >>>>>> >>>>>> > www-data\: /var/ >>>>>> >>>>>> > web2py >>>>>> >>>>>> > i) Where "www-data" is Cherokee's effective user (www-data is >>>>>> >>>>>> > the >>>>>> >>>>>> > default) >>>>>> >>>>>> >>>>>> > 2)uWSGI >>>>>> >>>>>> > a) DownloaduWSGI(found at projects.unbit.it/uwsgi/) >>>>>> >>>>>> > b) Unpackage wherever and cd into folder >>>>>> >>>>>> > i) Install dependencies for make, if not present: sudo apt-get >>>>>> >>>>>> > install python-dev libxml2-dev >>>>>> >>>>>> > c) Makeuwsgi: sudo make -f Makefile.Py26 >>>>>> >>>>>> > d) Install: sudo cp uwsgi26 /usr/local/bin/uwsgi >>>>>> >>>>>> > e) Create config.xml: sudo cat > /var/web2py/config.xml >>>>>> >>>>>> > <uwsgi> >>>>>> >>>>>> > <pythonpath>/var/web2py/</pythonpath> >>>>>> >>>>>> > <app mountpoint="/"> >>>>>> >>>>>> > <script>wsgihandler</script> >>>>>> >>>>>> > </app> >>>>>> >>>>>> > </uwsgi> >>>>>> >>>>>> > [PRESS ENTER] >>>>>> >>>>>> > [PRESS CTRL+D] >>>>>> >>>>>> >>>>>> > 3) Cherokee >>>>>> >>>>>> > a) Install Cherokee (follow the instructions at >>>>>> >>>>>> > cherokee-project.org) >>>>>> >>>>>> > i) Note: I highly recommend using the PPA method so you can >>>>>> >>>>>> > be sure >>>>>> >>>>>> > to have the latest version and no issues! >>>>>> >>>>>> > b) Run cherokee-admin: sudo cherokee-admin >>>>>> >>>>>> > c) Visit admin console (via browser, password is shown in >>>>>> >>>>>> > terminal): >>>>>> >>>>>> > localhost:9090 >>>>>> >>>>>> > d) Go to Virtual Servers, click Wizards, click Platforms, >>>>>> >>>>>> > clickuWSGI >>>>>> >>>>>> > i) New Host Name: web2py >>>>>> >>>>>> > ii) Document Root: /var/web2py >>>>>> >>>>>> > iii) Configuration File: /var/web2py/config.xml >>>>>> >>>>>> > iv) Same logs as vserver: default(combined) >>>>>> >>>>>> > v) Submit >>>>>> >>>>>> > e) Go to Virtual Servers, click default >>>>>> >>>>>> > i) Under "Basics", Virtual Server Nickname: original >>>>>> >>>>>> > f) Go to Virtual Servers, click web2py >>>>>> >>>>>> > i) Under "Basics", Virtual Server Nickname: default >>>>>> >>>>>> > ii) Under "Logging", verify all logging is correct (matches >>>>>> >>>>>> > original) >>>>>> >>>>>> > g) Go to Virtual Servers >>>>>> >>>>>> > i) Set original Active to OFF >>>>>> >>>>>> >>>>>> > 4) Visit localhost (or your.ip.add.ress from another computer) >>>>>> >>>>>> > to view >>>>>> >>>>>> > your web2py site! :D >>>>>> >>>>>> >>>>> -- >>>>>> >>>>> You received this message because you are subscribed to the Google >>>>>> >>>>> Groups "web2py-users" group. >>>>>> >>>>> To post to this group, send email to web...@googlegroups.com. >>>>>> >>>>> To unsubscribe from this group, send email to >>>>>> >>>>> web2py+unsubscr...@googlegroups.com. >>>>>> >>>>> For more options, visit this group >>>>>> >>>>> athttp://groups.google.com/group/web2py?hl=en. >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google Groups >>>>> "web2py-users" group. >>>>> To post to this group, send email to web...@googlegroups.com. >>>>> To unsubscribe from this group, send email to >>>>> web2py+unsubscr...@googlegroups.com. >>>>> For more options, visit this group at >>>>> http://groups.google.com/group/web2py?hl=en. >>>>> >>>>> >>>> >>> >> > -- You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to web...@googlegroups.com. To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/web2py?hl=en.