Before you start taking it apart, run a cycle with bleach in it. I would use about a cup of bleach. You could also try a cycle of either vinegar (again, about a cup), or baking soda (about a cup) but not at the same time or together. If that sort of cleaning doesn't take the smell away, then you might try the commercial cleaner or start doing the major investigations such as Poor but Proud has suggested.
I also wonder if you are running the drying cycle? If you are not, and then not opening the dishwasher to make sure everything is dry as a bone, that may account for the musty smell.
You should also check again in the bottom of the dishwasher and in the door for any "traps" or filters that might have debris collected.
If you are mechanically inclined, I would do this.
Turn off the fuse to the diswasher and the disposal.
Open the door, and unscrew the plastic door covering as far as you can without taking it off all the way. If the smell is from there, then finish taking off the door. Sometimes the insulation gets something in it and it's like body odor in a pillow or mattress.
If it's not there, you might want to take the roters off and soak them. As you have seen from some commercials about dishwasher tablets, you can collect food from inside there, too.
If you can't find it, I would take the unit out and make sure it has not been leaking onto the floor.
I used to find clogged up hoses from DW in my residents unit, and found out they didn't run their disposals and they were connected to them. When the food from the DW goes into the disposal, it needs to have water run and ran for about 30 seconds minimum.
Keep in mind you might have something as simple as a dead mouse down there. A bit of searching will help.
I hope that helps.
I usually pour some white vinegar in it and that helps. Or sprinkle baking soda in and around bottom and then pour vinegar in. There is a cleaner you can buy to put in it as your machine runs the cycle, but it's a tad bit expensive to me.
Add your voice to the conversation. Click here to answer this question.