关注“极客时间”公众号,后台回复“Nginx 试看”,即可获取此课程试看部分的 PDF 课件。
作者回复: 其实这里的5条线没有明确的指代,只是为了说明高并发往往导致吞吐量下降(RPS)。如果你看过类似unix网络编程这样的书,例子里提到的多进程或者多线程处理并发连接,那么依据这种方法开发出的服务就类似图中线条的趋势,而各自的代码如果效率更高,或者功能更简单,比如绿色的线,就会晚一点开始陡峭的下降。
作者回复: 这里,连接指的是TCP连接,可以在连接上进行双向的消息发送和接收。请求这里指的是http请求。每个http请求必须对应一个http响应,这是一次完整请求。一个连接上可以持续多个http请求的传输,这叫做http协议中的keepalive长连接。
作者回复: 缺点就是开发nginx模块需要的技术要求比较高。即使使用openresty后lua语言简化了许多,但仍然需要我们理解同步化与非阻塞接口,开发成本还是相对高一些的。
作者回复: 并发数只消耗内存,所以单纯看并发数的话,只要每连接消耗更小的内存就可以了。所以,一般看并发数时,一定要看吞吐量,也就是每秒处理多少请求。此时,已经是结合具体场景了,变数增大了。
比如针对静态资源,nginx所在主机需要分配更多的CPU资源去读取文件,如果是大文件,那么通常还需要开启aio/directIO等提高性能(磁盘页缓存没效果),往往output_buffer要打开,每连接至少要多消耗几十KB的内存。
所以,就目前普通主机性能看,百万或者千万这个量级是有可能达到的,但结合具体场景后,需要做调整。
作者回复: 最主要因素是全异步事件驱动,你可以看下27-32课
作者回复: reset复位包,不好意思发音不太标准:-)
作者回复: 并发数,指同时存在的TCP连接数量。连接数,即TCP连接的数量