From: <jo...@cy...> - 2005-02-24 17:54:05
|
Ok I've got an update, and again I really don't understand why this should be the case but it almost renders my last question mute. Apparently the time lag is only only really seen if I test on the same computer which is running the xmlrpc server. If I run the server on one computer and test on an other no significant time lag. Like I said I really don't understand why that should be the case, but I guess as long as it works. Jose > -------- Original Message -------- > Subject: [Webware-discuss] Why is this xmlrpc so slow? > From: "jose" <jo...@cy...> > Date: Wed, February 23, 2005 11:15 pm > To: web...@li... > > Dear webware community, > > I'm perplexed, I have been playing around with XMLRPC as a way to connect to > a database and deliver content. Please see the code below:(one is a > XMLRPCServlet and the second is a regular servlet) > > The is issue is that the XMLRPC servlet is about 8 times slower then the > regular servlet. This doesn't make any sense to me. If I kill the sleep > method, and not close the db connection, then it is really fast, but somehow > that does not feel right. I don't seem to be taking much of a hit by > getting a new connection every time with the regular servlet, so why should > it be so with the xmlrpc servlet? Am I doing something fundamentally wrong > in the xmlrpc? > > Any help would be great, and thanks in advance > > Jose > > ===================================================================== > server.py: > ===================================================================== > from WebKit.XMLRPCServlet import XMLRPCServlet as XS > import psycopg as pg > > > class server(XS): > > def __init__(self): > XS.__init__(self) > self.db = None > > def awake(self, trans): > XS.awake(self, trans) > self.db = pg.connect(user = 'postgres', database='phonebook') > def sleep(self, trans): > XS.sleep(self, trans) > if self.db: > self.db.close() > def cur(self): > return self.db.cursor() > > def exposedMethods(self): > return [ > 'echo', > 'listPeople' > ] > > def echo(self, what='you need to enter something'): > return what > > def listPeople(self): > sql = ''' > select > fname, > lname > from people > ''' > cur = self.cur() > cur.execute(sql) > people = cur.fetchall() > return people > ============================================================ > test.py > ============================================================ > from WebKit.Page import Page > import psycopg as pg > > class test(Page): > > def __init__(self): > Page.__init__(self) > self.db = None > > def awake(self, trans): > Page.awake(self, trans) > self.db = pg.connect(user = 'postgres', database='phonebook') > > def sleep(self, trans): > Page.sleep(self, trans) > if self.db: > self.db.close() > def cur(self): > return self.db.cursor() > > def writeContent(self): > sql = ''' > select > fname, > lname > from people > ''' > cur = self.cur() > cur.execute(sql) > people = cur.dictfetchall() > self.write(people) > ============================================================================ > ========= > > > > > > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real users. > Discover which products truly live up to the hype. Start reading now. > http://ads.osdn.com/?ad_ide95&alloc_id"396&op=click > _______________________________________________ > Webware-discuss mailing list > Web...@li... > https://lists.sourceforge.net/lists/listinfo/webware-discuss |
From: <jo...@cy...> - 2005-02-24 21:10:43
|
I've thought if that as well. I am pretty new to using postgres as my main database, most of my experience has been with mysql, and at least with mysql I would run into problems if I didn't explicitly close the connection, leaving it open would eventually crash the server. So I guess what I need to know, is this less of an issue with postgres? Jose > -------- Original Message -------- > Subject: Re: [Webware-discuss] Why is this xmlrpc so slow? > From: "jacob martinson" <mar...@gm...> > Date: Thu, February 24, 2005 11:20 am > To: "jose" <jo...@cy...> > Cc: "webware-discuss" <web...@li...> > > Probably not related to your issue, but wouldn't you want to leave the > connection (or connection pool) open between transactions, and just > create/destroy cursors in the awake/sleep cycle? > > -Jacob > > > On Wed, 23 Feb 2005 23:15:43 -0800, jose <jo...@cy...> wrote: > > Dear webware community, > > > > I'm perplexed, I have been playing around with XMLRPC as a way to connect to > > a database and deliver content. Please see the code below:(one is a > > XMLRPCServlet and the second is a regular servlet) > > > > The is issue is that the XMLRPC servlet is about 8 times slower then the > > regular servlet. This doesn't make any sense to me. If I kill the sleep > > method, and not close the db connection, then it is really fast, but somehow > > that does not feel right. I don't seem to be taking much of a hit by > > getting a new connection every time with the regular servlet, so why should > > it be so with the xmlrpc servlet? Am I doing something fundamentally wrong > > in the xmlrpc? > > > > Any help would be great, and thanks in advance > > > > Jose > > > > ===================================================================== > > server.py: > > ===================================================================== > > from WebKit.XMLRPCServlet import XMLRPCServlet as XS > > import psycopg as pg > > > > class server(XS): > > > > def __init__(self): > > XS.__init__(self) > > self.db = None > > > > def awake(self, trans): > > XS.awake(self, trans) > > self.db = pg.connect(user = 'postgres', database='phonebook') > > def sleep(self, trans): > > XS.sleep(self, trans) > > if self.db: > > self.db.close() > > def cur(self): > > return self.db.cursor() > > > > def exposedMethods(self): > > return [ > > 'echo', > > 'listPeople' > > ] > > > > def echo(self, what='you need to enter something'): > > return what > > > > def listPeople(self): > > sql = ''' > > select > > fname, > > lname > > from people > > ''' > > cur = self.cur() > > cur.execute(sql) > > people = cur.fetchall() > > return people > > ============================================================ > > test.py > > ============================================================ > > from WebKit.Page import Page > > import psycopg as pg > > > > class test(Page): > > > > def __init__(self): > > Page.__init__(self) > > self.db = None > > > > def awake(self, trans): > > Page.awake(self, trans) > > self.db = pg.connect(user = 'postgres', database='phonebook') > > > > def sleep(self, trans): > > Page.sleep(self, trans) > > if self.db: > > self.db.close() > > def cur(self): > > return self.db.cursor() > > > > def writeContent(self): > > sql = ''' > > select > > fname, > > lname > > from people > > ''' > > cur = self.cur() > > cur.execute(sql) > > people = cur.dictfetchall() > > self.write(people) > > ============================================================================ > > ========= > > > > ------------------------------------------------------- > > SF email is sponsored by - The IT Product Guide > > Read honest & candid reviews on hundreds of IT Products from real users. > > Discover which products truly live up to the hype. Start reading now. > > http://ads.osdn.com/?ad_ide95&alloc_id"396&opclick > > _______________________________________________ > > Webware-discuss mailing list > > Web...@li... > > https://lists.sourceforge.net/lists/listinfo/webware-discuss > > |
From: jacob m. <mar...@gm...> - 2005-02-25 05:27:09
|
i've run into problems with apache/php/mysql where mysqld's max_connections is less than the number of httpd processes are running, because php's pconnect will create a persistent connection per process. my understanding of the pg library you are using is it will setup a number of connections up front and then use them in parallel to service the cursors your app opens. i don't think you will run into the same problem as long as you are using a connection pool. On Thu, 24 Feb 2005 14:10:20 -0700, jo...@cy... <jo...@cy...> wrote: > I've thought if that as well. I am pretty new to using postgres as my > main database, most of my experience has been with mysql, and at least > with mysql I would run into problems if I didn't explicitly close the > connection, leaving it open would eventually crash the server. So I > guess what I need to know, is this less of an issue with postgres? > Jose |
From: jacob m. <mar...@gm...> - 2005-02-25 13:22:34
|
It might be worth your time to make sure you don't have an ipv6 localhost interface running, and/or also check that you don't have a "localhost" entry for the "::1" address. I've run into localhost problems similar to what you are describing when localhost was pointing to a nonexistant ipv6-localhost address. I'm not sure what the xmlrpcservlet would be doing different, but it's a quick check to make. -Jacob On Thu, 24 Feb 2005 10:54:00 -0700, jo...@cy... <jo...@cy...> wrote: > Ok I've got an update, and again I really don't understand why this > should be the case but it almost renders my last question mute. > Apparently the time lag is only only really seen if I test on the same > computer which is running the xmlrpc server. If I run the server on > one computer and test on an other no significant time lag. Like I said > I really don't understand why that should be the case, but I guess as > long as it works. > > Jose > |