In a typical server software design, business logic will generally invoke "services" (such as a database or web service).
When I design such a system, I tend to think of each service as a singleton which is created when the system starts up and handles multiple concurrent requests throughout the lifetime, usually not storing details of any particular request within itself.
However, there is an alternative design whereby a new instance of the service is instantiated for each request. Personally I would normally use the term "handler" instead of "service" for this.
It seems to me both patterns can work equally well. Is there a reason to prefer one over the other, or a de-facto best practice regarding this?