On Feb 10, 2011, at 11:18 AM, VP <[email protected]> wrote:
> The modules I used are all standard via installation with apt-get. > > Python is 2.5.2, and psycopg2 is 2.0.7 > Upgrade psycopg2 to at least 2.0.8 and see if that doesn't fix the fault. > On Feb 10, 9:58 am, Jonathan Lundell <[email protected]> wrote: >> Good work. >> >> You mentioned that you're using Debian Lenny. What version of Python? 2.5.2? >> >> And what version of psycopg2? >> >> On Feb 9, 2011, at 10:38 PM, VP wrote: >> >> >> >>> Alright people.... short answer: I think I figured this out (at least >>> with my configuration)!!!! >> >>> After testing various configurations, here's the result with: ab -kc >>> 100 -t 20https://domain.com/imageblog/default/index/ (same >>> imageblog app, 100 connections, 20 seconds stress test). >> >>> Two things you will notice with this result. >> >>> 1. ZERO failed request. No more wsgi premature script error!!!! >>> 2. Complete requests is 1234, 61 requests/second on average. >>> Compare to prior configuration: 588 total requests, 29 requests/ >>> sec on average. Not to mention 15 failed requests due to wsgi >>> premature script errors!!! >> >>> This is insane!!! >> >>> So how did I configure this? here it is: >> >>> WSGIDaemonProcess web2py user=username group=username \ >>> display-name=%{GROUP} processes=5 threads=1 >> >>> The important option being 5 processes, 1 thread. >> >>> With this configuration, my real app also did not get wsgi premature >>> script errors anymore. And guess what... the requests/sec >>> triples!!!! >> >>> I am still curious about this. While my real app can possibly be not >>> thread-safe, but the imageblog app should be thread safe (the index >>> was simply a listing of images, i.e. read only). Why would there be a >>> problem with more than 1 thread? >> >>> ============ >> >>> Document Path: /imageblog/default/index >>> Document Length: 13083 bytes >> >>> Concurrency Level: 100 >>> Time taken for tests: 20.008 seconds >>> Complete requests: 1234 >>> Failed requests: 0 >>> Write errors: 0 >>> Keep-Alive requests: 1234 >>> Total transferred: 16827432 bytes >>> HTML transferred: 16171262 bytes >>> Requests per second: 61.68 [#/sec] (mean) >>> Time per request: 1621.377 [ms] (mean) >>> Time per request: 16.214 [ms] (mean, across all concurrent >>> requests) >>> Transfer rate: 821.33 [Kbytes/sec] received >> >>> Connection Times (ms) >>> min mean[+/-sd] median max >>> Connect: 0 1 9.4 0 73 >>> Processing: 82 481 890.5 317 5475 >>> Waiting: 76 443 878.7 274 5393 >>> Total: 82 483 894.7 317 5503 >> >>> Percentage of the requests served within a certain time (ms) >>> 50% 317 >>> 66% 342 >>> 75% 360 >>> 80% 372 >>> 90% 416 >>> 95% 489 >>> 98% 5351 >>> 99% 5397 >>> 100% 5503 (longest request) >>> ======== >> >>

