• 12

A PHP Error was encountered

Severity: Notice

Message: Undefined index: userid

Filename: views/question.php

Line Number: 191


File: /home/prodcxja/public_html/questions/application/views/question.php
Line: 191
Function: _error_handler

File: /home/prodcxja/public_html/questions/application/controllers/Questions.php
Line: 433
Function: view

File: /home/prodcxja/public_html/questions/index.php
Line: 315
Function: require_once

I want to determine if some databases are overloaded or unbalanced, and think that looking at the transaction logs created per database over time would tell me which DB is at risk of missing RPO targets due to high IO (mostly writes).

My thought is to create a graph of each database, every X minutes and count each log that is created.

Since each log = 1MB in an E2010 DAG, I can easily calculate the amount of data that could be lost in a given time.

So my question is:

  1. How can I determine if a given database has extra IO that might be better moved to a lower volume database? Is transaction logs a valid way of looking at it?

  2. How should I procedurally figure out the load? Perhaps a powershell script, C#, and export that to a graph or excel.

      • 2
    • Sorry, still not understanding what you are looking for. Are you trying to identify low-usage mailboxes so that you can move them to a database on slower disk? Are you trying to find high-usage mailboxes to move them to faster disk? Do you just want to profile IO over time for mailboxes in a given database? Or something else all together?
      • 2
    • @MDMarra All disks are the same. The problem I'm seeing is that our bandwidth isn't capable of maintaining a realistic RPO due to many logs being created. This results in one particular database lag behind the others. I would rather spread out the load across all databases so that this one DB doesn't stick out during a failover event... and may need to be restored from tape because replication is.. well useless for this DB.
    • Ok, so I will ask one more time. What metrics are you looking to retrieve from this mail database? Are you looking for the busiest mailboxes so that you can move them to other databases? If your throughput is an issue, all that this will do is cause your replication lag to be spread more evenly, it won't make it go away.

First off, you can use the great info here: http://penetrateit.wordpress.com/2012/02/11/exchange-2010-balancing-the-number-of-mailboxes-and-average-size-across-all-databases/ to figure out some stats needed to help balance the mailboxes across databases.

Or you can use Steve's script here: http://www.stevieg.org/2010/09/balancing-exchange-databases/

However, Let me suggest an additional approach:

  • if you haven't already, setup your DBs based on RPO. Meaning create a VIP database, and so on. Put those VIPs together in a DB that you know will get replicated well across the WAN and use LUNs that won't fill up for this DB. (HOWEVER, note that you don't want to go crazy and put all your high-use users into the VIP DB, or you'll compound your issue). By VIP, I'm referring to people where the RPO is "the last hour" or similar. You can even make a "Meh RPO" db and stick a bunch of non-essential mailboxes in there that you don't care much about regarding RPO, then if you have the means to do so on your WAN de-prioritize their replication traffic.

Hope that helps.

  • 2
Reply Report

Trending Tags