OnUpdate is called on every frame refresh, so if you had 20fps, then it would be called 20 times a second.
You can only update every 1/2 second, for example by rewriting the OnUpdate func like:
local OnUpdate = function(self, a1)
time = time + a1
if(time > .5) then
<DO STUFF IN HERE>
time = 0
end
end