I'm using a recent (within the past two weeks) download of Webware 0.6. I've gotten WebKit working via CGI, via mod_python, and now via mod_webkit. But now I'm trying to get sophisticated and connect to Oracle to see what the performance win for WebKit is. Unfortunately, I can reliably generate a gvsegmentation fault that crashes the AppServer process.
I'll admit to being new to Python, new to Webware, but not new to Apache. I'm a recovering Perl programmer trying to learn a better way.
What I've done is create a "page," dhPage.py (contents below) that is a lot like countVisits in the distribution, except that it also opens an Oracle connection, does a simple select from the scott/tiger tables in Oracle's sample schema, and formats the results. It runs interactively just fine, but what I'm really trying to demonstrate is the performance improvement from only connecting to Oracle once per thread. So I run the 'ab' program (Apache benchmarker) and have it make a couple thousand requests, with 10-40 concurrent. With only a couple concurrent requests, no problems. With 10 or more, I get a seg fault pretty quickly.
I tried starting up 20 AppServer threads and allowing up to 100 threads, but that didn't help.
With respect to the code below, I've got two questions:
1. Is there something I'm doing wrong that would cause the segfaulting?
2. Is there another approach I can use to "pool" Oracle connections?
from ExamplePage import ExamplePage
dbconn = DCOracle2.connect('scott/tiger@oralin')
self.write('<h3>select * from emp results</h3>')
res = dhPage.dbconn.execute('select * from emp')
list = dhPage.dbconn.fetchall()
for row in list:
for field in row:
self.write('<td>', field, '</td>')
David Hancock | email@example.com | 410-266-4384