Viewports render the scene and show whatever is visible with the Camera
or Camera2D
node under the Viewport. So, it is the equivalent of rendering the screen, which can be costly depending on how many you are using and what you are rendering.
That said, Viewports can be set to only render once, which would mean the performance impact would be relatively minor (though there is a memory cost), at the cost of not being able to update the viewport dynamically.
You could also have the Viewport only update when visible, which may save performance here and there and would allow you to dynamically update whatever is in the Viewport, but the scene has to be rendered N+1 many times, where N is the number of visible Viewports. This could lead to performance issues depending on how many you have.
If you can, you probably want to try to find alternative solutions if you need lots of Viewport nodes. Though, as @SIsilicon28 said, it depends on what they are rendering, as well as your use case.