Killing the worker process and starting a new one. It's a common technique to combat the problem of memory leaks. (Albeit not a particularly satisfying solution to a purist.)
This comment was marked helpful 0 times.
analysiser
@shabnam I think it means the zombie processes would be "reaped" by their parent process so their memory and resources could be used by other processes. Please correct me if I get it wrong.
This comment was marked helpful 0 times.
moon
When might we want to use one partitioning configuration over the other? I can see that processes ensure safety when one worker crashes, and I imagine multi-threaded web servers tend to use less resources (since threads share resources). Are there any situations in which servers partitioned into processes are more efficient in terms of latency or throughput, or vice versa? Or is the fact that multi-threading introduces complications and possible race conditions the only difference?
This comment was marked helpful 0 times.
selena731
I would guess you might want to use multi-threaded if you want to have a simple server, and just like mentioned on this slide, if you know you will not be using any non-thread safe libraries nor writing any non-thread safe code. Also, I looked up Apache worker and it said "By using threads to serve requests, it is able to serve a large number of requests with fewer system resources than a process-based server." So depending on the system, you might want to use threads, since processes could be more expensive.
Side note, since I'm not familiar much with system stuff, does 1 thread crash really cause the whole server to crash?
This comment was marked helpful 0 times.
mchoquet
@selena731 Based on this man page, it seems like signals can be sent on either a process level or a thread level, so a thread crash could likely cause the whole process to crash.
This comment was marked helpful 0 times.
DunkMaster
Also, there is no need to share communication between different requests in most cases. So it sounds more like process than thread at first glance.
What exactly does it mean by recycling workers?
This comment was marked helpful 0 times.
Killing the worker process and starting a new one. It's a common technique to combat the problem of memory leaks. (Albeit not a particularly satisfying solution to a purist.)
This comment was marked helpful 0 times.
@shabnam I think it means the zombie processes would be "reaped" by their parent process so their memory and resources could be used by other processes. Please correct me if I get it wrong.
This comment was marked helpful 0 times.
When might we want to use one partitioning configuration over the other? I can see that processes ensure safety when one worker crashes, and I imagine multi-threaded web servers tend to use less resources (since threads share resources). Are there any situations in which servers partitioned into processes are more efficient in terms of latency or throughput, or vice versa? Or is the fact that multi-threading introduces complications and possible race conditions the only difference?
This comment was marked helpful 0 times.
I would guess you might want to use multi-threaded if you want to have a simple server, and just like mentioned on this slide, if you know you will not be using any non-thread safe libraries nor writing any non-thread safe code. Also, I looked up Apache worker and it said "By using threads to serve requests, it is able to serve a large number of requests with fewer system resources than a process-based server." So depending on the system, you might want to use threads, since processes could be more expensive.
Side note, since I'm not familiar much with system stuff, does 1 thread crash really cause the whole server to crash?
This comment was marked helpful 0 times.
@selena731 Based on this man page, it seems like signals can be sent on either a process level or a thread level, so a thread crash could likely cause the whole process to crash.
This comment was marked helpful 0 times.
Also, there is no need to share communication between different requests in most cases. So it sounds more like process than thread at first glance.
This comment was marked helpful 0 times.