/*********************************************************************
 * Author  : Samson
 * Date    : 07/12/2015
 * Test platform:
 *              gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2
 *              GNU bash, 4.3.11(1)-release (x86_64-pc-linux-gnu)
* Nginx version:
* Nginx 1.6.2
* Nginx 1.8.0
 * *******************************************************************/

SO_RCVLOWAT SO_SNDLOWAT

每一个套接口都有一个接收低潮限度和一个发送低潮限度。

接收低潮限度:对于TCP套接口而言。接收缓冲区中的数据必须达到规定数量,内核才通知进程“可读”。比方触发select或者epoll。返回“套接口可读”。

发送低潮限度:对于TCP套接口而言,和接收低潮限度一个道理。

理解接收低潮限度:假设应用程序没有调用recv()去读取socket的接受缓冲区的数据,则接受缓冲区数据将注一直保存在接受缓冲区中,所以随着接受缓冲区接受到很多其它发送端发送缓冲区中的数据。则肯定会导致接受缓冲区溢出,所以设置一个接受低潮限度,当epoll监听到某一个socket的接受缓冲区的数据超过了接受低潮限度,则触发读就绪,使得epoll循环返回,開始处理读I/O事件。

接收低潮限度:默觉得1字节

理解发送低潮限度:假设应用程序没有调用send()来copy应用程序buff中的数据到socket发送缓冲区中,则随着发送缓冲区的数据被内核通过tcp协议发送出去。最后socket发送缓冲区的数据越来越少,可用的剩余空间越来越多。最后超过发送缓冲区的发送低潮限度。则epoll监听到这个socket可写。使得epoll循环返回。開始处理写I/O事件。

发送低潮限度:默觉得2048字节

Nginx中相应的设置:

ngx_send_lowat设置

GNU Linux提供的setsockopt进行设置,在Nginx中的src/event/ngx_event.c代码中的ngx_send_lowat函数中进行了发送低潮限度: setsockopt(c->fd, SOL_SOCKET, SO_SNDLOWAT, (const void *) &sndlowat, sizeof(int)

GNU Linux中的SO_RCVLOWAT和SO_SNDLOWAT说明的更多相关文章

  1. GNU linux 中makefile那点事

    转自陈皓: http://bbs.chinaunix.net/viewthread.php?tid=408225 概述—— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为 ...

  2. 在GNU Linux中怎样得到一个进程当前的流量

    /*********************************************************************  * Author  : Samson  * Date   ...

  3. Gnu Linux下文件的字符编码及转换工具

    /*********************************************************************  * Author  : Samson  * Date   ...

  4. Debian系统中当安装deb软件时出现:deb cdrom:[Debian GNU/Linux 9.3.0 _Stretch_ - Official amd64 DVD Binary-1 20171209-12:11]/ stretch contrib main

    vi /etc/apt/sources.list // 注释掉下面这句话# deb cdrom:[Debian GNU/Linux 9.3.0 _Stretch_ - Official amd64 D ...

  5. windows和linux中搭建python集成开发环境IDE——如何设置多个python环境

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  6. (转)完全用GNU/Linux工作 by 王珢

    完全用GNU/Linux工作 王珢      (看完这篇博文,非常喜欢王珢的这篇博客,也我坚定了学gnu/linux的决心,并努力去按照国外的计算机思维模式去学习编程提高自己.看完这篇文章令我热血沸腾 ...

  7. linux中Makefile文件相关内容

    第一章.概述什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional(专业)的程序员,m ...

  8. Gnu/Linux的学习探索

    1.Gnu/Linux是一个基于POSIX和UNIX的多用户多任务 支持多线程多CPU的类UNIX的操作系统. 继承了UNIX以网络为核心的设计思想 是性能稳定的多用户网络操作系统. 1991年10月 ...

  9. GNU/Linux复习笔记(1)

    第一次接触GNU/Linux还是大四上学期实习的那两个月在window里装了 个虚拟机玩红帽的系统,那段时间稍微学了一点命令就不玩了.后来大四下学期认识了王总,装了双系统,那段时间又对linux有了进 ...

随机推荐

  1. node-webkit 屏幕截图功能

    做 IM 屏幕截图是少不了的,之前 windows 版本是调用的 qq 输入法的截图功能,这个版本又再次尝试自己实现发现是可以的,getusermedia 的权限很高,代码如下 <!DOCTYP ...

  2. Java并发包

    刚看到一篇总结的比较全的JUC包总结,转载如下: 1. java.util.concurrent - Java 并发工具包 Java 5 添加了一个新的包到 Java 平台,java.util.con ...

  3. 剑指offer——03从尾至头打印列表(Python3)

    思路:相当于数据结构中的链表就地逆置,可以使用头插法来实现. 代码: class Solution:     # 返回从尾部到头部的列表值序列,例如[1,2,3]     def printListF ...

  4. BZOJ 4516 后缀数组+ST+set

    写了一半 没了啊啊啊 重新写的 思路: 先不考虑后缀自动机 (我不会啊) 那这道题只能用后缀数组了 先把原串倒一下 后缀->前缀 相当于每回在前面加了一个字母 求不同的子串个数 首先 正常的求子 ...

  5. 关于getchar()的使用

    '\n'表示换行.如果用键盘敲一下回车键的话,getchar会返回一个换行符.!='\n'意思是不等于换行符.ch应该是前边定义的一个char型变量, getchar()是一个从缓冲区获取字符的函数, ...

  6. ubuntu下安装VMware

    1 用apt-get命令更新系统 loginname@localhost:~$ sudo apt-get update 2 从官方网站下载Workstation11(Bundle Script) lo ...

  7. 基于Socket的Winform例子

    一.直接上效果图 二.Socket握手 三.服务端 Thread threadWatch = null;// 负责监听客户端的线程 Socket socketWatch = null;// 负责监听客 ...

  8. EntityFramework使用及优化

    1. 简介 ORM框架:Object Relation Mapping,用操作对象的方式来操作数据库 其它框架:Dapper.NHibernate,首推EF,微软官方的. EF底层还是ADO.NET实 ...

  9. mysql学习 1

    1.数据库(Database)是按照数据结构来组织.存储和管理数据的仓库 2.RDBMS即关系数据库管理系统(Relational Database Management System)的特点: 1) ...

  10. linux拷贝文件

    linux之cp/scp命令+scp命令详解 2011-03-09 17:27:22|  分类: Linux |  标签:linux  cp  scp  commond   |字号 订阅   名称:c ...