I suspect that node-cryptonote-pool, that moneropool.com and other mining pools run on, averages your hash rate over too short a time window. If I'm reading the source code correctly, the default is 600 seconds (10 minutes).
(The reason can also be your shares are not accepted. However, that is easy to check in the output of most mining software.)
I calculate my own average of submitted work every hour instead. That produces a number that fluctuates some ±20% compared to the numbers my workers report. I run on 50 cores, + 1 GPU.
These sites have an API where you can poll your own stats. The raw numbers for your own wallet can be extracted via:
It returns something like:
If you poll every hour, subtract the numbers for accepted hashes compared to last time, and divide by the difference in time, you can calculate your own numbers with a simple python script.