Best external power supply for Arduino

I have 3 ultrasonic sensors, 1 servo motor, and 3 vibration motors. When connecting to the laptop using a USB cable they all are working well, but when powering through a 9v battery all the components are not working well. I've read that a 9v battery is not good for powering an Arduino.
Can anyone tell me which battery should I use to run all these components?

You need external supply that is matching or exceeds your USB supplied current. Look up tech spec for your USB then compare to teh external power source you choose.

A 9V battery with suitable capacity would be perfectly OK, but I suspect that you are using a PP3 battery designed for use in smoke detectors which can deliver very little current for any significant time. Try using 6 AA cells in series as an alternative but you don't say what your required time between battery replacement is.

How much current does your project take when all 4 motors are running ?

Even if you are using a larger 9V battery such as PP9 (those are not used much these days) powering your circuit like this is not a good idea. You are relying on the Arduino's built-in linear regulator to regulate the 9V down to 5V. It does this by "burning off" any excess power as heat. With a 9V input, almost half of all the power used by the circuit will be burned off as heat. The Arduino' regulator was designed to power just the Arduino, and maybe a few other low power components as well, but not high power components like motors. It will quickly overheat and shut down or be damaged. Certainly it's lifespan will be reduced.

If you must use a higher voltage battery like 9V or 12V, it's better to use a dc-dc converter, also called a "buck regulator". These are much more efficient than a linear regulator, and do not produce large amounts of heat. These often have adjustable output voltages, so you can adjust them to 5V and power the Arduino directly through its 5V pin, bypassing it's internal regulator.

Motors and servos will be wanting amps, your 9V motor is happy with 50mA, struggling with 150mA, hopeless at 0.5A or above...

Add up the current requirements, choose a power source capable of easily handling that current level. Note that the instanteous demands of servos and motors is much
more than the average levels, due to stall-current demands when starting from a
standstill - this is often a pitfall for the unwary.

Small servos usually need 1A, larger servos more. Motors vary widely in their stall
current demands, from 1A to 100A depending on power and size and efficiency.
Vibration motors are perhaps in the 0.5A to 2A stall current range.