使CentOS 6支持TCP_FASTOPEN和TCP_SO_REUSEPORT

为何要写这篇文章呢?主要是为了在不更新系统版本的情况,通过更新内核来支持TCP_FASTOPEN和TCP_SO_REUSEPORT特性,以便给Nginx和其他程序更好地使用新功能。文章源自靠谱运维-https://www.ixdba.net/archives/676

TCP_SO_REUSEPORT特性在kernel-2.6.32-431.29.2及kernel-3.9被启用,CentOS 6用户可以通过更新内核到2.6.32-431或更高版本来支持这项特性。文章源自靠谱运维-https://www.ixdba.net/archives/676

这个非常简单,直接yum -y update就行了。文章源自靠谱运维-https://www.ixdba.net/archives/676

关于TCP_FASTOPEN特性在kernel-3.6被客户端支持,在kernel-3.7被服务端支持,也就是说使用TCP_FASTOPEN需要CentOS 6更新内核至3.7或更高版本,以便支持这项特性。文章源自靠谱运维-https://www.ixdba.net/archives/676

可以通过两种方式来使用新内核,详见《CentOS 6 x64更新内核为3.10.93》这篇文章。文章源自靠谱运维-https://www.ixdba.net/archives/676

即使内核支持了TCP_FASTOPEN,在编译Nginx的过程中也可能会提示:文章源自靠谱运维-https://www.ixdba.net/archives/676

checking for TCP_FASTOPEN ... not found

使用的时候,出现类似:文章源自靠谱运维-https://www.ixdba.net/archives/676

nginx: [emerg] invalid parameter "fastopen=3" in /usr/local/nginx/conf/nginx.conf:9

那么,如何在内核支持TCP_FASTOPEN的前提下,让nginx成功编译上TCP_FASTOPEN特效呢?
在配置Nginx的时候,填上:文章源自靠谱运维-https://www.ixdba.net/archives/676

--with-cc-opt="-DTCP_FASTOPEN=23"

这是一句定义句,你可以理解为:文章源自靠谱运维-https://www.ixdba.net/archives/676

#define TCP_FASTOPEN 23

如此便能成功编译上TCP_FASTOPEN功能。文章源自靠谱运维-https://www.ixdba.net/archives/676

另外建议在/etc/sysctl.conf填上:文章源自靠谱运维-https://www.ixdba.net/archives/676

net.ipv4.tcp_fastopen = 3

最后用sysctl -p应用配置。文章源自靠谱运维-https://www.ixdba.net/archives/676

END,两个特性都支持上了。文章源自靠谱运维-https://www.ixdba.net/archives/676

以上内容基于CentOS 6 x64,主要介绍如何更新使用kernel 3.10.93内核来支持TCP_FASTOPEN和TCP_SO_REUSEPORT特性。文章源自靠谱运维-https://www.ixdba.net/archives/676

  • 本文由 发表于 2017年6月29日15:41:38
  • 转载请务必保留本文链接:https://www.ixdba.net/archives/676
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: