This Article collects all the posts under the Measuring/Billing database usage in StratosLive.
My Job
WSO2 Data Services Server User Guide
Need to find I/O rates, bandwidth used by each Database user
Limiting The Resource Use
I continued
Suggestions and replies
Collecting and summarizing the captured data
Followed the BAM samples.
Do you need data to play with?
Prototype version 1
Prototype version 1 has to be verified.
1st Verification
OSGi Services
Publishing to BAM
Using OSGi console to debug things
[Break for Test Automation]
Back to the Frozen project
WSO2 Storage Server
The Inevitable Change
Strange things do happen
Using Hive Scripts to Analyze and Summarize BAM data
Difference between two time ignoring the date
Replacing for ntask(quartz-scheduler), using timer task
It is almost 'THE END'
Showing posts with label StratosLive RSS. Show all posts
Showing posts with label StratosLive RSS. Show all posts
Friday, November 30, 2012
Measuring/Billing database usage in StratosLive - Summery
Labels:
bam,
BAM2,
billing,
database,
database size,
mysql,
remote debugging,
StratosLive RSS,
usage agent,
WSO2 Data Services Server
Wednesday, September 26, 2012
It is almost 'THE END'
Now this is the summery of What I have done
It is agreed to measure the database space usage by each tenant. Here we
will not limit the tenant(in terms of database access) on its DB
usage but will keep track on excess DB space use by each tenant.
Component level view of the process.
Changes to each component:
Rss-manager: This component will
be used to gather usage data from the RSS. And this will add those
data to a queue which in turn will be retrieved by usage agent
component. This Usage data collection will be handle through couple
of newly added classes. And this is scheduled to be run daily. And it
is configurable to run starting from a given time and repeated with
given time gap(currently decided to run it in 24h intervals). Here we
will only interested in tenants with exceeded usage. So it is needed
to know the usage plan of a interested tenant, in order to get its
limits. We thought of only publishing information about those tenants
who exceeds the space limits, due to two reasons.
- To reduce the data transfer between components and to the BAM server.
- Exceeded DB size is all we need for billing calculations.
Usage-agent: This component will
retrieve usage data from the queue(above mentioned) in the
rss-manager. This is handled by newly added class,
DatabaseUsageDataRetrievalTask. This is also scheduled to be run
daily. And it is configurable to run starting from a given time and
repeated with given time gap(currently decided to run it in 24h
intervals).
Stratos-commons: This is where
usage plan details are manipulated. Here plan details are read from
'multitenancy-packages.xml' and made available for use through a
service. Here I have changed the xml file, xml reading class, data
storing bean, to contain DB usage related data.
Dependencies: this depends on
the yet to develop component (to get the tenant usage plan given the
tenant domain/id) and that component is required for the RSS-Manager
component changed to work perfectly.
Labels:
architecture,
billing,
rss manager,
StratosLive RSS,
the end,
usage agent,
WSO2 Data Services Server,
WSO2 Storage Server
Saturday, June 2, 2012
I continued
So my last day suggestion way not up to
the standard, so Amilam asked me to restructure it, so this is the
version 2
Problem:
Until now we don't have a way to measure the usage of the StratosLive RSS. There can be many views of the usage like I/O per unit time, accumulated DB size per user, Bandwidth used by a user (i think this is taken in to account by now). We need to start measuring(tracking) the usage at least under one view (ideally in all). Real problem comes with the limitations of mySQL. In mySQL, it do not have in built support for above mention things.
we cannot limit DB space: http://www.howtoforge.com/forums/showthread.php?t=1944
we cannot limit/measure bandwidth/IO rate of a individual database/user : http://forums.mysql.com/read.php?10,543847,543847
There is a way to set the MAX_QUERIES_PER_HOUR, MAX_CONNECTIONS_PER_HOUR, but there is no way to get the current state of those variables (without messing with mySQL code base, http://forums.mysql.com/read.php?35,179219)
Solutions:
There are external suggestions for limiting database size, we can do something like that, as a example,
MySQL Quota Daemon: http://lrem.net/software/mysql-quota-daemon.xhtml
MySQL Quota-Tool: http://projects.marsching.org/mysql_quota/
And we can limit the user to a MAX_QUERIES_PER_HOUR using in built support in mySQL (http://dev.mysql.com/doc/refman/5.5/en/grant.html). This limit will not be a problem to the user while service is protected from getting extreme number of request per unit time (kind of DOS)
And there are suggested ways to limit the DB size per user, using cronjobs that will notify the user of excess usage of space.
How we can use what we have:
1. We can limit the size of the DB at the time of DB creation based on the usage plan.
2. We can define transactions per hour for all or selected usage plans
Please reply with your feedback on this view, it will be very helpful...
Until now we don't have a way to measure the usage of the StratosLive RSS. There can be many views of the usage like I/O per unit time, accumulated DB size per user, Bandwidth used by a user (i think this is taken in to account by now). We need to start measuring(tracking) the usage at least under one view (ideally in all). Real problem comes with the limitations of mySQL. In mySQL, it do not have in built support for above mention things.
we cannot limit DB space: http://www.howtoforge.com/forums/showthread.php?t=1944
we cannot limit/measure bandwidth/IO rate of a individual database/user : http://forums.mysql.com/read.php?10,543847,543847
There is a way to set the MAX_QUERIES_PER_HOUR, MAX_CONNECTIONS_PER_HOUR, but there is no way to get the current state of those variables (without messing with mySQL code base, http://forums.mysql.com/read.php?35,179219)
Solutions:
There are external suggestions for limiting database size, we can do something like that, as a example,
MySQL Quota Daemon: http://lrem.net/software/mysql-quota-daemon.xhtml
MySQL Quota-Tool: http://projects.marsching.org/mysql_quota/
And we can limit the user to a MAX_QUERIES_PER_HOUR using in built support in mySQL (http://dev.mysql.com/doc/refman/5.5/en/grant.html). This limit will not be a problem to the user while service is protected from getting extreme number of request per unit time (kind of DOS)
And there are suggested ways to limit the DB size per user, using cronjobs that will notify the user of excess usage of space.
How we can use what we have:
1. We can limit the size of the DB at the time of DB creation based on the usage plan.
2. We can define transactions per hour for all or selected usage plans
Please reply with your feedback on this view, it will be very helpful...
Labels:
mysql,
StratosLive RSS,
wso2,
WSO2 Data Services Server
Subscribe to:
Posts (Atom)