RE: MySQL Virtual Host and Traffic Module

2009-04-19 Thread Jorge Bastos
Hi there Dave :)
I still haven't got time to configure it, but I've been checking tracking
SVN changes.

Jorge,


> -Original Message-
> From: Dave Ingram [mailto:d...@dmi.me.uk]
> Sent: domingo, 19 de Abril de 2009 22:14
> To: modules-dev@httpd.apache.org
> Subject: Re: MySQL Virtual Host and Traffic Module
> 
> Hi Eldho,
> 
> I'm the author mod_sqltemplate, which sounds like it does what you're
> after (as Jorge kindly pointed out). It's currently under mostly-active
> development, and I'm definitely open to bug reports and suggestions.
> 
> 
> Dave
> 
> 
> Eldho wrote:
> > Hi Vaughan,
> >
> > What is the status of this module. Actually I am searching for a
> module
> > that write all the vhost  configuration to a database and read it
> from db
> > also.
> >
> > thanks.
> >
> > Eldho
> >
> >
> >
> > Dave Ingram wrote:
> >
> >> Hi Vaughan,
> >>
> >>> Thanks for the response. I haven't thought of doing the SQL query
> the way
> >>> you suggested, however I agree that it will cause unnecessary load
> on
> >>> busy
> >>> servers and I would like to keep this as efficient as possible.
> >>>
> >>> The second option sounds more reasonable. I have already used
> threading
> >>> to
> >>> make a function which ticks on a configurable interval so I suppose
> each
> >>> child process would dump data for each of its vhosts at this
> interval,
> >>> using
> >>> a query similar to what you have suggested.
> >>>
> >>>
> >> I think that's probably the most sensible approach. It does mean
> that
> >> you won't have up-to-the-moment statistics, and I would guess that
> you'd
> >> have to play about with different intervals as the number of hosts
> grows
> >> in order for it to scale. You may also want to consider somehow
> >> staggering the updates, so they don't all happen at once. It may
> also be
> >> advisable to perform an UPDATE rather than an INSERT... ON DUPLICATE
> >> UPDATE once your module knows that there is a value that can be
> updated
> >> (i.e. after the query has run once in the simple case, or once this
> >> day/hour/etc in the complex case).
> >>
> >>
> >>> I think I might go with the second option for the time being and
> see how
> >>> it
> >>> goes but I am still interested to know if there is a way to store
> per
> >>> vhost
> >>> data across children?
> >>>
> >>>
> >> I would be interested to know how things turn out, and I'd be
> interested
> >> to see the final module. I've been thinking about writing a custom
> >> bandwidth monitoring/limiting module myself, but if I don't need to
> >> reinvent the wheel...
> >>
> >> I'm afraid I can't answer this question in a definite way, though.
> One
> >> module that should store per-vhost data like this is mod_cband
> >> <http://sourceforge.net/projects/cband/>, so that might be worth
> looking
> >> into.
> >>
> >> As a side note, I'd be interested to know how you create/template
> the
> >> virtual hosts. I myself have written a database-backed templating
> module
> >> that could be used for virtual hosting
> >> (http://www.dmi.me.uk/code/apache/mod_sqltemplate/) and I'm curious
> to
> >> see other approaches.
> >>
> >> Thanks,
> >>
> >>
> >> Dave
> >>
> >>
> >>> Thanks,
> >>> Vaughan
> >>>
> >>> -Original Message-
> >>> From: Dave Ingram [mailto:d...@dmi.me.uk]
> >>> Sent: Thursday, 19 March 2009 12:28 AM
> >>> To: modules-dev@httpd.apache.org
> >>> Subject: Re: MySQL Virtual Host and Traffic Module
> >>>
> >>> Vaughan,
> >>>
> >>>
> >>>
> >>>> What I have so far are 2 filters which gather the inbound traffic
> and
> >>>> outbound traffic for each transaction. These work ok and when
> logging
> >>>> transactions to file all of the in/out byte amounts appear to be
> >>>> correct.
> >>>> The first problem however, is that each child has its own set of
> memory
> >>>>
> >>>>
> >>> and
> >>>
> >>>
> >

Re: MySQL Virtual Host and Traffic Module

2009-04-19 Thread Dave Ingram

Hi Eldho,

I'm the author mod_sqltemplate, which sounds like it does what you're 
after (as Jorge kindly pointed out). It's currently under mostly-active 
development, and I'm definitely open to bug reports and suggestions.



Dave


Eldho wrote:

Hi Vaughan,

What is the status of this module. Actually I am searching for a module 
that write all the vhost  configuration to a database and read it from db

also.

thanks.

Eldho



Dave Ingram wrote:
  

Hi Vaughan,


Thanks for the response. I haven't thought of doing the SQL query the way
you suggested, however I agree that it will cause unnecessary load on
busy
servers and I would like to keep this as efficient as possible.

The second option sounds more reasonable. I have already used threading
to
make a function which ticks on a configurable interval so I suppose each
child process would dump data for each of its vhosts at this interval,
using
a query similar to what you have suggested.
  
  
I think that's probably the most sensible approach. It does mean that 
you won't have up-to-the-moment statistics, and I would guess that you'd 
have to play about with different intervals as the number of hosts grows 
in order for it to scale. You may also want to consider somehow 
staggering the updates, so they don't all happen at once. It may also be 
advisable to perform an UPDATE rather than an INSERT... ON DUPLICATE 
UPDATE once your module knows that there is a value that can be updated 
(i.e. after the query has run once in the simple case, or once this 
day/hour/etc in the complex case).




I think I might go with the second option for the time being and see how
it
goes but I am still interested to know if there is a way to store per
vhost
data across children?
  
  
I would be interested to know how things turn out, and I'd be interested 
to see the final module. I've been thinking about writing a custom 
bandwidth monitoring/limiting module myself, but if I don't need to 
reinvent the wheel...


I'm afraid I can't answer this question in a definite way, though. One 
module that should store per-vhost data like this is mod_cband 
<http://sourceforge.net/projects/cband/>, so that might be worth looking 
into.


As a side note, I'd be interested to know how you create/template the 
virtual hosts. I myself have written a database-backed templating module 
that could be used for virtual hosting 
(http://www.dmi.me.uk/code/apache/mod_sqltemplate/) and I'm curious to 
see other approaches.


Thanks,


Dave



Thanks,
Vaughan

-Original Message-
From: Dave Ingram [mailto:d...@dmi.me.uk] 
Sent: Thursday, 19 March 2009 12:28 AM

To: modules-dev@httpd.apache.org
Subject: Re: MySQL Virtual Host and Traffic Module

Vaughan,

  
  

What I have so far are 2 filters which gather the inbound traffic and
outbound traffic for each transaction. These work ok and when logging
transactions to file all of the in/out byte amounts appear to be
correct.
The first problem however, is that each child has its own set of memory



and
  
  

therefore keeps its own totals per virtual host. This also means that
multiple logging events occur for each transaction. I could just log
this
all to database but it would 1) be inefficient and 2) cause the size of



the
  
  

database to grow quite quickly.
  



It sounds to me like you could go two ways with this. I don't know the
format of your database table, but it should be possible to update it
atomically using something like:

INSERT INTO bandwidth (vhost_id, bw_in, bw_out) VALUES (42, 1124,
5023409) ON DUPLICATE KEY UPDATE bw_in = bw_in + 1124, bw_out = bw_out +
5023409

but that could lead to a lot of load. Another way might be for each
child to collect statistics and only flush to the database periodically,
say every 30 seconds (perhaps configurable on a per-vhost basis, so that
load-heavy sites could have larger update intervals). It would still be
possible to use the query above though.

This query could probably even be updated to split statistics on a
date/time basis, if you require more granular reporting.

Or have I missed/misunderstood something?


Dave

  
  





  




RE: MySQL Virtual Host and Traffic Module

2009-04-17 Thread Jorge Bastos
Ops!
Didn't saw that It was in the end of the email already :)


> -Original Message-
> From: Jorge Bastos [mailto:mysql.jo...@decimal.pt]
> Sent: sexta-feira, 17 de Abril de 2009 19:54
> To: modules-dev@httpd.apache.org
> Subject: RE: MySQL Virtual Host and Traffic Module
> 
> http://www.dmi.me.uk/code/apache/mod_sqltemplate/
> 
> this module will do the work for you, I still haven't got time to test
> it
> but for sure will do.
> 
> 
> 
> > -Original Message-
> > From: Eldho [mailto:eldhokp...@gmail.com]
> > Sent: sexta-feira, 17 de Abril de 2009 19:49
> > To: modules-dev@httpd.apache.org
> > Subject: Re: MySQL Virtual Host and Traffic Module
> >
> >
> > Hi Vaughan,
> >
> > What is the status of this module. Actually I am searching for a
> module
> > that write all the vhost  configuration to a database and read it
> from
> > db
> > also.
> >
> > thanks.
> >
> > Eldho
> >
> >
> >
> > Dave Ingram wrote:
> > >
> > > Hi Vaughan,
> > >> Thanks for the response. I haven't thought of doing the SQL query
> > the way
> > >> you suggested, however I agree that it will cause unnecessary load
> > on
> > >> busy
> > >> servers and I would like to keep this as efficient as possible.
> > >>
> > >> The second option sounds more reasonable. I have already used
> > threading
> > >> to
> > >> make a function which ticks on a configurable interval so I
> suppose
> > each
> > >> child process would dump data for each of its vhosts at this
> > interval,
> > >> using
> > >> a query similar to what you have suggested.
> > >>
> > > I think that's probably the most sensible approach. It does mean
> that
> > > you won't have up-to-the-moment statistics, and I would guess that
> > you'd
> > > have to play about with different intervals as the number of hosts
> > grows
> > > in order for it to scale. You may also want to consider somehow
> > > staggering the updates, so they don't all happen at once. It may
> also
> > be
> > > advisable to perform an UPDATE rather than an INSERT... ON
> DUPLICATE
> > > UPDATE once your module knows that there is a value that can be
> > updated
> > > (i.e. after the query has run once in the simple case, or once this
> > > day/hour/etc in the complex case).
> > >
> > >> I think I might go with the second option for the time being and
> see
> > how
> > >> it
> > >> goes but I am still interested to know if there is a way to store
> > per
> > >> vhost
> > >> data across children?
> > >>
> > > I would be interested to know how things turn out, and I'd be
> > interested
> > > to see the final module. I've been thinking about writing a custom
> > > bandwidth monitoring/limiting module myself, but if I don't need to
> > > reinvent the wheel...
> > >
> > > I'm afraid I can't answer this question in a definite way, though.
> > One
> > > module that should store per-vhost data like this is mod_cband
> > > <http://sourceforge.net/projects/cband/>, so that might be worth
> > looking
> > > into.
> > >
> > > As a side note, I'd be interested to know how you create/template
> the
> > > virtual hosts. I myself have written a database-backed templating
> > module
> > > that could be used for virtual hosting
> > > (http://www.dmi.me.uk/code/apache/mod_sqltemplate/) and I'm curious
> > to
> > > see other approaches.
> > >
> > > Thanks,
> > >
> > >
> > > Dave
> > >
> > >>
> > >> Thanks,
> > >> Vaughan
> > >>
> > >> -Original Message-
> > >> From: Dave Ingram [mailto:d...@dmi.me.uk]
> > >> Sent: Thursday, 19 March 2009 12:28 AM
> > >> To: modules-dev@httpd.apache.org
> > >> Subject: Re: MySQL Virtual Host and Traffic Module
> > >>
> > >> Vaughan,
> > >>
> > >>
> > >>> What I have so far are 2 filters which gather the inbound traffic
> > and
> > >>> outbound traffic for each transaction. These work ok and when
> > logging
> > >>> transactions to file all of the in/out byte amounts appear to be
> > >>> correct.
&

RE: MySQL Virtual Host and Traffic Module

2009-04-17 Thread Jorge Bastos
http://www.dmi.me.uk/code/apache/mod_sqltemplate/

this module will do the work for you, I still haven't got time to test it
but for sure will do.



> -Original Message-
> From: Eldho [mailto:eldhokp...@gmail.com]
> Sent: sexta-feira, 17 de Abril de 2009 19:49
> To: modules-dev@httpd.apache.org
> Subject: Re: MySQL Virtual Host and Traffic Module
> 
> 
> Hi Vaughan,
> 
> What is the status of this module. Actually I am searching for a module
> that write all the vhost  configuration to a database and read it from
> db
> also.
> 
> thanks.
> 
> Eldho
> 
> 
> 
> Dave Ingram wrote:
> >
> > Hi Vaughan,
> >> Thanks for the response. I haven't thought of doing the SQL query
> the way
> >> you suggested, however I agree that it will cause unnecessary load
> on
> >> busy
> >> servers and I would like to keep this as efficient as possible.
> >>
> >> The second option sounds more reasonable. I have already used
> threading
> >> to
> >> make a function which ticks on a configurable interval so I suppose
> each
> >> child process would dump data for each of its vhosts at this
> interval,
> >> using
> >> a query similar to what you have suggested.
> >>
> > I think that's probably the most sensible approach. It does mean that
> > you won't have up-to-the-moment statistics, and I would guess that
> you'd
> > have to play about with different intervals as the number of hosts
> grows
> > in order for it to scale. You may also want to consider somehow
> > staggering the updates, so they don't all happen at once. It may also
> be
> > advisable to perform an UPDATE rather than an INSERT... ON DUPLICATE
> > UPDATE once your module knows that there is a value that can be
> updated
> > (i.e. after the query has run once in the simple case, or once this
> > day/hour/etc in the complex case).
> >
> >> I think I might go with the second option for the time being and see
> how
> >> it
> >> goes but I am still interested to know if there is a way to store
> per
> >> vhost
> >> data across children?
> >>
> > I would be interested to know how things turn out, and I'd be
> interested
> > to see the final module. I've been thinking about writing a custom
> > bandwidth monitoring/limiting module myself, but if I don't need to
> > reinvent the wheel...
> >
> > I'm afraid I can't answer this question in a definite way, though.
> One
> > module that should store per-vhost data like this is mod_cband
> > <http://sourceforge.net/projects/cband/>, so that might be worth
> looking
> > into.
> >
> > As a side note, I'd be interested to know how you create/template the
> > virtual hosts. I myself have written a database-backed templating
> module
> > that could be used for virtual hosting
> > (http://www.dmi.me.uk/code/apache/mod_sqltemplate/) and I'm curious
> to
> > see other approaches.
> >
> > Thanks,
> >
> >
> > Dave
> >
> >>
> >> Thanks,
> >> Vaughan
> >>
> >> -Original Message-
> >> From: Dave Ingram [mailto:d...@dmi.me.uk]
> >> Sent: Thursday, 19 March 2009 12:28 AM
> >> To: modules-dev@httpd.apache.org
> >> Subject: Re: MySQL Virtual Host and Traffic Module
> >>
> >> Vaughan,
> >>
> >>
> >>> What I have so far are 2 filters which gather the inbound traffic
> and
> >>> outbound traffic for each transaction. These work ok and when
> logging
> >>> transactions to file all of the in/out byte amounts appear to be
> >>> correct.
> >>> The first problem however, is that each child has its own set of
> memory
> >>>
> >> and
> >>
> >>> therefore keeps its own totals per virtual host. This also means
> that
> >>> multiple logging events occur for each transaction. I could just
> log
> >>> this
> >>> all to database but it would 1) be inefficient and 2) cause the
> size of
> >>>
> >> the
> >>
> >>> database to grow quite quickly.
> >>>
> >>>
> >>
> >> It sounds to me like you could go two ways with this. I don't know
> the
> >> format of your database table, but it should be possible to update
> it
> >> atomically using something like:
> >>
> >> INSERT INTO bandwidth (vhost_id, bw_in, bw_out) VALUES (42, 1124,
> >> 5023409) ON DUPLICATE KEY UPDATE bw_in = bw_in + 1124, bw_out =
> bw_out +
> >> 5023409
> >>
> >> but that could lead to a lot of load. Another way might be for each
> >> child to collect statistics and only flush to the database
> periodically,
> >> say every 30 seconds (perhaps configurable on a per-vhost basis, so
> that
> >> load-heavy sites could have larger update intervals). It would still
> be
> >> possible to use the query above though.
> >>
> >> This query could probably even be updated to split statistics on a
> >> date/time basis, if you require more granular reporting.
> >>
> >> Or have I missed/misunderstood something?
> >>
> >>
> >> Dave
> >>
> >>
> >
> >
> >
> 
> --
> View this message in context: http://www.nabble.com/MySQL-Virtual-Host-
> and-Traffic-Module-tp22579200p23103676.html
> Sent from the Apache HTTP Server - Module Writers mailing list archive
> at Nabble.com.




Re: MySQL Virtual Host and Traffic Module

2009-04-17 Thread Eldho

Hi Vaughan,

What is the status of this module. Actually I am searching for a module 
that write all the vhost  configuration to a database and read it from db
also.

thanks.

Eldho



Dave Ingram wrote:
> 
> Hi Vaughan,
>> Thanks for the response. I haven't thought of doing the SQL query the way
>> you suggested, however I agree that it will cause unnecessary load on
>> busy
>> servers and I would like to keep this as efficient as possible.
>>
>> The second option sounds more reasonable. I have already used threading
>> to
>> make a function which ticks on a configurable interval so I suppose each
>> child process would dump data for each of its vhosts at this interval,
>> using
>> a query similar to what you have suggested.
>>   
> I think that's probably the most sensible approach. It does mean that 
> you won't have up-to-the-moment statistics, and I would guess that you'd 
> have to play about with different intervals as the number of hosts grows 
> in order for it to scale. You may also want to consider somehow 
> staggering the updates, so they don't all happen at once. It may also be 
> advisable to perform an UPDATE rather than an INSERT... ON DUPLICATE 
> UPDATE once your module knows that there is a value that can be updated 
> (i.e. after the query has run once in the simple case, or once this 
> day/hour/etc in the complex case).
> 
>> I think I might go with the second option for the time being and see how
>> it
>> goes but I am still interested to know if there is a way to store per
>> vhost
>> data across children?
>>   
> I would be interested to know how things turn out, and I'd be interested 
> to see the final module. I've been thinking about writing a custom 
> bandwidth monitoring/limiting module myself, but if I don't need to 
> reinvent the wheel...
> 
> I'm afraid I can't answer this question in a definite way, though. One 
> module that should store per-vhost data like this is mod_cband 
> <http://sourceforge.net/projects/cband/>, so that might be worth looking 
> into.
> 
> As a side note, I'd be interested to know how you create/template the 
> virtual hosts. I myself have written a database-backed templating module 
> that could be used for virtual hosting 
> (http://www.dmi.me.uk/code/apache/mod_sqltemplate/) and I'm curious to 
> see other approaches.
> 
> Thanks,
> 
> 
> Dave
> 
>>
>> Thanks,
>> Vaughan
>>
>> -Original Message-
>> From: Dave Ingram [mailto:d...@dmi.me.uk] 
>> Sent: Thursday, 19 March 2009 12:28 AM
>> To: modules-dev@httpd.apache.org
>> Subject: Re: MySQL Virtual Host and Traffic Module
>>
>> Vaughan,
>>
>>   
>>> What I have so far are 2 filters which gather the inbound traffic and
>>> outbound traffic for each transaction. These work ok and when logging
>>> transactions to file all of the in/out byte amounts appear to be
>>> correct.
>>> The first problem however, is that each child has its own set of memory
>>> 
>> and
>>   
>>> therefore keeps its own totals per virtual host. This also means that
>>> multiple logging events occur for each transaction. I could just log
>>> this
>>> all to database but it would 1) be inefficient and 2) cause the size of
>>> 
>> the
>>   
>>> database to grow quite quickly.
>>>   
>>> 
>>
>> It sounds to me like you could go two ways with this. I don't know the
>> format of your database table, but it should be possible to update it
>> atomically using something like:
>>
>> INSERT INTO bandwidth (vhost_id, bw_in, bw_out) VALUES (42, 1124,
>> 5023409) ON DUPLICATE KEY UPDATE bw_in = bw_in + 1124, bw_out = bw_out +
>> 5023409
>>
>> but that could lead to a lot of load. Another way might be for each
>> child to collect statistics and only flush to the database periodically,
>> say every 30 seconds (perhaps configurable on a per-vhost basis, so that
>> load-heavy sites could have larger update intervals). It would still be
>> possible to use the query above though.
>>
>> This query could probably even be updated to split statistics on a
>> date/time basis, if you require more granular reporting.
>>
>> Or have I missed/misunderstood something?
>>
>>
>> Dave
>>
>>   
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/MySQL-Virtual-Host-and-Traffic-Module-tp22579200p23103676.html
Sent from the Apache HTTP Server - Module Writers mailing list archive at 
Nabble.com.



Re: MySQL Virtual Host and Traffic Module

2009-03-18 Thread Dave Ingram

Hi Vaughan,

Thanks for the response. I haven't thought of doing the SQL query the way
you suggested, however I agree that it will cause unnecessary load on busy
servers and I would like to keep this as efficient as possible.

The second option sounds more reasonable. I have already used threading to
make a function which ticks on a configurable interval so I suppose each
child process would dump data for each of its vhosts at this interval, using
a query similar to what you have suggested.
  
I think that's probably the most sensible approach. It does mean that 
you won't have up-to-the-moment statistics, and I would guess that you'd 
have to play about with different intervals as the number of hosts grows 
in order for it to scale. You may also want to consider somehow 
staggering the updates, so they don't all happen at once. It may also be 
advisable to perform an UPDATE rather than an INSERT... ON DUPLICATE 
UPDATE once your module knows that there is a value that can be updated 
(i.e. after the query has run once in the simple case, or once this 
day/hour/etc in the complex case).



I think I might go with the second option for the time being and see how it
goes but I am still interested to know if there is a way to store per vhost
data across children?
  
I would be interested to know how things turn out, and I'd be interested 
to see the final module. I've been thinking about writing a custom 
bandwidth monitoring/limiting module myself, but if I don't need to 
reinvent the wheel...


I'm afraid I can't answer this question in a definite way, though. One 
module that should store per-vhost data like this is mod_cband 
<http://sourceforge.net/projects/cband/>, so that might be worth looking 
into.


As a side note, I'd be interested to know how you create/template the 
virtual hosts. I myself have written a database-backed templating module 
that could be used for virtual hosting 
(http://www.dmi.me.uk/code/apache/mod_sqltemplate/) and I'm curious to 
see other approaches.


Thanks,


Dave



Thanks,
Vaughan

-Original Message-
From: Dave Ingram [mailto:d...@dmi.me.uk] 
Sent: Thursday, 19 March 2009 12:28 AM

To: modules-dev@httpd.apache.org
Subject: Re: MySQL Virtual Host and Traffic Module

Vaughan,

  

What I have so far are 2 filters which gather the inbound traffic and
outbound traffic for each transaction. These work ok and when logging
transactions to file all of the in/out byte amounts appear to be correct.
The first problem however, is that each child has its own set of memory


and
  

therefore keeps its own totals per virtual host. This also means that
multiple logging events occur for each transaction. I could just log this
all to database but it would 1) be inefficient and 2) cause the size of


the
  

database to grow quite quickly.
  



It sounds to me like you could go two ways with this. I don't know the
format of your database table, but it should be possible to update it
atomically using something like:

INSERT INTO bandwidth (vhost_id, bw_in, bw_out) VALUES (42, 1124,
5023409) ON DUPLICATE KEY UPDATE bw_in = bw_in + 1124, bw_out = bw_out +
5023409

but that could lead to a lot of load. Another way might be for each
child to collect statistics and only flush to the database periodically,
say every 30 seconds (perhaps configurable on a per-vhost basis, so that
load-heavy sites could have larger update intervals). It would still be
possible to use the query above though.

This query could probably even be updated to split statistics on a
date/time basis, if you require more granular reporting.

Or have I missed/misunderstood something?


Dave

  




RE: MySQL Virtual Host and Traffic Module

2009-03-18 Thread Vaughan Reid
Hi Dave,

Thanks for the response. I haven't thought of doing the SQL query the way
you suggested, however I agree that it will cause unnecessary load on busy
servers and I would like to keep this as efficient as possible.

The second option sounds more reasonable. I have already used threading to
make a function which ticks on a configurable interval so I suppose each
child process would dump data for each of its vhosts at this interval, using
a query similar to what you have suggested.

I think I might go with the second option for the time being and see how it
goes but I am still interested to know if there is a way to store per vhost
data across children?


Thanks,
Vaughan

-Original Message-
From: Dave Ingram [mailto:d...@dmi.me.uk] 
Sent: Thursday, 19 March 2009 12:28 AM
To: modules-dev@httpd.apache.org
Subject: Re: MySQL Virtual Host and Traffic Module

Vaughan,

> What I have so far are 2 filters which gather the inbound traffic and
> outbound traffic for each transaction. These work ok and when logging
> transactions to file all of the in/out byte amounts appear to be correct.
> The first problem however, is that each child has its own set of memory
and
> therefore keeps its own totals per virtual host. This also means that
> multiple logging events occur for each transaction. I could just log this
> all to database but it would 1) be inefficient and 2) cause the size of
the
> database to grow quite quickly.
>   

It sounds to me like you could go two ways with this. I don't know the
format of your database table, but it should be possible to update it
atomically using something like:

INSERT INTO bandwidth (vhost_id, bw_in, bw_out) VALUES (42, 1124,
5023409) ON DUPLICATE KEY UPDATE bw_in = bw_in + 1124, bw_out = bw_out +
5023409

but that could lead to a lot of load. Another way might be for each
child to collect statistics and only flush to the database periodically,
say every 30 seconds (perhaps configurable on a per-vhost basis, so that
load-heavy sites could have larger update intervals). It would still be
possible to use the query above though.

This query could probably even be updated to split statistics on a
date/time basis, if you require more granular reporting.

Or have I missed/misunderstood something?


Dave



Re: MySQL Virtual Host and Traffic Module

2009-03-18 Thread Dave Ingram
Vaughan,

> What I have so far are 2 filters which gather the inbound traffic and
> outbound traffic for each transaction. These work ok and when logging
> transactions to file all of the in/out byte amounts appear to be correct.
> The first problem however, is that each child has its own set of memory and
> therefore keeps its own totals per virtual host. This also means that
> multiple logging events occur for each transaction. I could just log this
> all to database but it would 1) be inefficient and 2) cause the size of the
> database to grow quite quickly.
>   

It sounds to me like you could go two ways with this. I don't know the
format of your database table, but it should be possible to update it
atomically using something like:

INSERT INTO bandwidth (vhost_id, bw_in, bw_out) VALUES (42, 1124,
5023409) ON DUPLICATE KEY UPDATE bw_in = bw_in + 1124, bw_out = bw_out +
5023409

but that could lead to a lot of load. Another way might be for each
child to collect statistics and only flush to the database periodically,
say every 30 seconds (perhaps configurable on a per-vhost basis, so that
load-heavy sites could have larger update intervals). It would still be
possible to use the query above though.

This query could probably even be updated to split statistics on a
date/time basis, if you require more granular reporting.

Or have I missed/misunderstood something?


Dave