[OpenSER-Devel] presence load tests: 1.2.1 vs trunk with mysql

Dan Pascu dan at ag-projects.com
Thu Jul 19 04:47:39 CEST 2007


This may also be related to the recent change introduced by patch #1742425 
https://sourceforge.net/tracker/?func=detail&atid=743022&aid=1742425&group_id=139143

That patch replaced db_mysql_store_result with db_mysql_fetch_result which 
does reduce the load on openser when doing database operations at the 
cost of increasing it on the mysql server.

One negative side effect of that change is that if the whole result set is 
fetched row by row using mysql_fetch_row, it will take more time than 
when using mysql_store_result because there will be N database requests 
and the round trip time between openser and the mysql server will add up 
N times instead of just once.

Another negative side effect is that if openser does a lot of processing 
on the fetched rows, during that time the result set is locked on the 
server taking up server resources. Also during this time, the result set 
being locked will prevent other mysql threads to update entries in that 
result set which may introduce delays in database operations.

So depending on the type of queries performed by openser and the way they 
are processed after retrieval, the change introduced by that patch may 
improve database operations or may make them worse.

Using fetch_result instead of store_result is beneficial if:
1. Only a few rows of a large result set are retrieved
2. Processing of the retrieved rows on the client side is minimal so it 
won't lock the result set on the server for long.

I haven't looked in detail to the patch that did this change so some of 
the observations here may not apply (depending how it is implemented), 
but I think it is worth considering these points for finding the problem.

On Tuesday 17 July 2007, Toni Barata wrote:
> Hi Anca, Daniel,
>
> From the results of the load tests it seems the issue is directly
> related with the size of presentity table:
>
> N of presentities in Presentity table	N publish msgs -> mysqld:99,9%CPU
> 14000							11/s
> 55000							6/s
> 180000						3/s
>
> The result is the same for tests with force_active= 1 or with xcap
> authorization
>
> Best regards,
> Toni
>
> -----Original Message-----
> From: Anca-Maria Vamanu [mailto:anca at voice-system.ro]
> Sent: terça-feira, 17 de Julho de 2007 12:03
> To: Toni Barata
> Cc: devel at openser.org
> Subject: Re: [OpenSER-Devel] presence load tests: 1.2.1 vs trunk with
> mysql
>
> Hello Toni,
>
> Have you run the tests with force_active= 1 or with xcap authorization?
> (the generalization introduced some database query inefficiency when
> force_active is not set).
>
> regards,
>
> Anca Vamanu
>
> Toni Barata wrote:
> > Hi all,
> >
> >
> >
> > I am using MySQL 5.0.22 database for persistent storage and I have
> > preformed some presence load tests for publish messages, and observed
> > that in trunk version if I have more than 2 messages per second the
> > mysqld process runs out the CPU with 99,9% of his capacity.
> >
> > In the 1.2.1 version there is no such problem when performing the
> > same load tests.
> >
> >
> >
> > What difference between version 1.2.1 and trunk have made the mysqld
> > process became obsessive?
> >
> >
> >
> > Regards,
> >
> > Toni
> >
> >
> >
> >
> >
> >----------------------------------------------------------------------
> >--
> >
> >_______________________________________________
> >Devel mailing list
> >Devel at openser.org
> >http://openser.org/cgi-bin/mailman/listinfo/devel
>
> _______________________________________________
> Devel mailing list
> Devel at openser.org
> http://openser.org/cgi-bin/mailman/listinfo/devel



-- 
Dan



More information about the Devel mailing list