提升Ngixn服务器性能(二)

正如你可能在一开始就注意到的那样 —— 这可能会导致在持久连接上的一些暂时的死锁。

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:国际域名空间、虚拟主机、营销软件、网站建设、开江网站维护、网站推广。
由于是初始的拥塞窗口,发送端被允许传送两个包:A 和 B
在这个数据交换过程中,由于 Nagel 和延迟 ACK 之间的死锁引入了 200ms 的延迟。
Nagle 算法是当时真正的救世主,而且目前仍然具有极大的价值。但在大多数情况下我们不会在我们的网站上使用它,因此可以通过添加 TCP_NODELAY 标志来安全地关闭它。
sendfile
正常来说当要发送一个文件时需要下面的步骤:
这涉及到两个上下文切换(读,写),并使相同对象的第二个副本成为不必要的。正如你所看到的,这不是的方式。值得庆幸的是还有另一个系统调用,提升了发送文件(的效率),它被称为:sendfile(2)(想不到吧!居然是这名字)。这个调用在文件 cache 中检索一个对象,并传递指针(不需要复制整个对象),直接传递到 socket 描述符,Netflix 表示,使用 sendfile(2) 将网络吞吐量从 6Gbps 提高到了 30Gbps。
然而,sendfile(2) 有一些注意事项:
在 nginx 中打开它tcp_nopush
tcp_nopush 与 tcp_nodelay 相反。不是为了尽可能快地推送数据包,它的目标是一次性优化数据的发送量。
在发送给客户端之前它将强制等待包达到长度(MSS),而且这个指令只有在 sendfile 开启时才起作用。
看起来 tcp_nopush 和 tcp_nodelay 是互斥的。但是,如果所有 3 个指令都开启了,nginx 会:
我应该使用多少进程?

分享文章:提升Ngixn服务器性能(二)
本文路径:http://azwzsj.com/article/cgcpoo.html