Problem with tachometer using attachInterrupt and servo
Your problem is probably that of interrupt conflicts.

The 8-bit Arduinos don't have any concept of interrupt priorities. When one interrupt routine is running it is impossible for any other interrupt routine to run until that first one has finished.

Interrupts have a "natural call priority" in that lower numbered pending interrupts will be called in preference to higher numbered ones, however that doesn't mean that they can interrupt each other.

The problem here is that the servo library uses a timer (and its associated interrupt) to generate the waveform.  That uses a lot of interrupt calls running all the time - and while they are running your external interrupt can't be called - at least not until the currently executing timer interrupt completes, at which point your external interrupt handler will be called since it is the highest priority. 

So the results you get with all that delaying are pretty meaningless.

So what can you do?  Well, there's a number of options - all of which involve not using interrupts.


You could not use the Servo.h library and instead reconfigure the hardware PWM to the right frequency and use that for the servo
You could use one of the timers with an external clock source to count your tacho pulses (I think Timer 1 has that ability on the Uno)


Or even better: do both.  That would give you the most efficient system whereby the main CPU is only involved in getting the count from the timer periodically, and adjusting the PWM value for your servo. The rest is then done by hardware completely asynchronously.

Of course, for this you will want to study the datasheet so you know how to configure the various hardware modules.