• 有铭
    2018-11-15
    我记得Apache httpd的最新版本也调整了模式,现在也变成了多线程+epoll模式了啊

    作者回复: epoll其实只是为了实现完全事件驱动的异步方式,即,nginx可以用单线程实现数万并发连接的高吞吐量处理。如果是由epoll仅处理连接的建立,而建立好的连接交由一个线程处理,这种模式不是全异步的事件驱动方式,性能上不去的。

     1
     3
  • 朱雯
    2019-08-05
    说下我的问题吧:
    1:为什么apache设计成一个进程服务一个链接,而不是和nginx一样设计成为一个进程服务多个链接呢,y是存在什么历史背景或者其他原因吗?就算他现在是这样,为什么不改呢,改成和nginx一样,这是是很困难吗。。。
    2:为什么nginx可以设计为一个进程多个链接得模式,进程间切换存在操作系统资源的损耗,那链接间切换会导致这个问题吗,后续会有更多细节来讲这个嘛。。。
    3: 公司nginx使用都是简单的反向代理,没有用到一些高级使用,估计也很难有实践机会,那这些内容我能记住吗,有什么建议可以让我记得更好呢,这个问题提的有点过分,但是还是希望有回答,谢谢

    作者回复: 1、同步开发很简单,改成异步很困难,尤其是在生态已经形成的基础上。
    2、20课、31课还会介绍。
    3、按请求处理流程学习与记忆,可以形成结构化知识。

    
     1
  • 高枕
    2019-01-09
    老师您好,又回头看了一下30-40课。跟您确认下我的理解是否正确:
    一 每个work进程采用非阻塞模式,同步处理多个客户端的链接。当一个链接需要等待的时候,由nigix决定是否等待或者处理下一个连接。
    二.通过连接池的方式保存与客户端和上游的连接。
    三 为第三方模块预先设计好了很多内存结构:红黑树,哈希,链表等

    作者回复: 是的。对第3点而言,也不是为第三方模块设计的,而是就现代程序设计而言,这些数据结构覆盖了多数场景, nginx自身的框架也使用了这些数据结构。

    
    
  • 徐泉
    2018-11-26
    apache是以进程为基础结构的,看到有说扩容Apache web站点服务时,通常是说增加服务器而不是增加处理器,是这样吗?原因是什么?

    作者回复: 增加处理器?是说换CPU吗?这与进程为基础结构无关。
    换CPU成本很高,这也涉及厂家提供的保修服务。
    你说的扩容是指水平扩展吧?第4部分第1节课就会说到扩展性问题,这是负载均衡的核心问题,你可以先听听那节课。

    
    
  • 徐泉
    2018-11-26
    apache也可以使用worker MPM模式。每个子进程会创建一些线程,每个请求过来,会被分配到1个线程来服务,这个相对于nginx来说还是要低效吗?Apache的这种模式会更安全吗?

    作者回复: 更低效,在第2部分请求的切换课程中有介绍原理。不会更安全,在第2部分关于worker进程时提到过nginx选用多进程的原因。

    
    
  • 王之刚
    2018-11-21
    不好意思,上面的问题没有描述清楚,我一直有个疑问,用epoll百万次网络并发链接句柄,好像系统内核也不能同时支持打开上百万的文件句柄吧,epoll是怎么做到的呢?

    作者回复: linux没有这样的限制哦,只要内存够大。默认每个进程打开的句柄数是受限的,你需要调整下参数,提升这个上限。需要root权限。

    
    
  • 王之刚
    2018-11-19
    epoll一次达到上百万的吗?

    作者回复: 上百万什么?没有单位哦。是QPS还是并发连接?活跃连接还是总连接?

    
    
我们在线,来聊聊吧