WebServer
WebServer copied to clipboard
请问一下,WebServer的工作队列的多线程与Nginx的多进程模型相比何有优劣的比较?
个人的愚见(我只是一个初学者):
- 首先从多进程与多线程来说, nginx 的 worker 挂掉了, master 还能重启一个 worker 进程, 多线程的话, 自然就是 core dump.
- nginx 可以杀掉 worker, 然后加载配置文件, 在 fork 新的 worker, 进行热升级.
- nginx 多数应用于各个连接无关联的场景, 虽然 WebServer 也是这样, 但是我们可以很方便的扩展计算任务, 并分配到不同的计算线程中执行. 想想多进程, 难道要 IPC 吗... 说的不一定对, 但我们可以讨论一下.
这就是多线程与多进程的区别。。。那进一步的提问,为什么WebServer(muduo)采用多线程而不采用多进程呢?换句话说就是在这样的场景下多线程有什么好处呢?
可以看看陈硕的博客. 这个 还有这个 他的主要意见是, 根据一次请求处理使用的内存大小来区分这两者, 单进程多线程可以避免 CPU cache 的频繁换入换出. 对于静态 server, 个人感觉应该没有什么本质差别, 毕竟瓶颈在磁盘 IO 和网络 IO 上.
感谢,