linux tcp_nodelay,仔细看参数--NGINX之tcp_nodelay

一、知识准备

● 在nginx优化中有个经常需要设置的参数,tcp_nodelay

● 该参数最核心的功能,就是把小包组成成大包,提高带宽利用率也就是著名的nagle算法

● tcp协议中,有一个现象:应用层数据可能很低(比如1个字节),而传输层开销有40字节(20字节的IP头+20字节的TCP头)。这种情况下大部分都是控制包的传输,既加大了带宽的消耗,带宽利用率也不高

● nagle算法就是为了解决这个问题。在发出去的数据还未被确认之前,或者说还没有收到对端的ack之前,新生成的小包是不允许被发送的,必须要凑满一个MSS或者等到收到确认后再发送,直至超时

二、环境准备

组件

版本

OS

Ubuntu 18.04.1 LTS

docker

18.06.0-ce

客户端 : 192.168.17.171

服务端 : 192.168.17.173

三、打开nagle算法

192.168.17.173,先准备一个nginx配置文件,并且打开nagle算法,设置tcp_nodelay off;

root@k8s-node2:/tmp# more nginx.conf

user nginx;

worker_processes 1;

error_log /var/log/nginx/error.log warn;

pid /var/run/nginx.pid;

events {

worker_connections 1024;

}

http {

include /etc/nginx/mime.types;

default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;

你可能感兴趣的:(linux,tcp_nodelay)