You have an INSANE number of draw calls… As well you are drawing 12million skeletal mesh triangles and overall 47 million triangles. Those are high numbers.
Hardware is decent enough, you should have much higher framerates if you trim the overhead.
Best guess, you need to use instanced static meshes. They can draw the same mesh multiple times in a single draw call, vs each instance taking its own call.
Try these:
- Performance and Profiling | Unreal Engine 4.27 Documentation
- Optimizing and Profiling Games with Unreal Engine 4 - Vincent Loignon
This is one around instancing: