本博文为老男孩linu培训机构早期的培训教案,特分享以供大家学习参考。
全部系列分为五篇文章,本博文为第五篇:
5.1高并发linux生产服务器内核参数优化案例

高并发linux生产服务器内核参数优化案例

说明:本优化适合apache,nginx,squid多种等web应用,特殊的业务也可能需要略作调整。

所谓内核优化,主要是在Linux系统中针对业务服务应用而进行的系统内核参数优化,优化并无特殊的标准,下面以常见生产环境linux的内核优化为例讲解,仅供大家参考:

net.ipv4.tcp_fin_timeout = 2

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_keepalive_time = 600

net.ipv4.ip_local_port_range = 400065000

net.ipv4.tcp_max_syn_backlog = 16384

net.ipv4.tcp_max_tw_buckets = 36000

net.ipv4.route.gc_timeout = 100

net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_synack_retries = 1

net.core.somaxconn = 16384

net.core.netdev_max_backlog = 16384

net.ipv4.tcp_max_orphans = 16384

#以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不理。

net.ipv4.ip_conntrack_max = 25000000

net.ipv4.netfilter.ip_conntrack_max=25000000

net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180

net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120

net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60

net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120

将上面的内核参数值加入/etc/sysctl.conf文件中,然后执行如下命令使之生效:sysctl -p

参数解释找谷歌吧,大把大把。呵呵。

六、TCP 连接状态

6.1三次握手建立连接

TCP是一个面向连接的协议,所以在连接双方发送数据之前,都需要首先建立一条连接。TCP连接的建立可以简单的称为三次握手,而连接的中止则可以叫做四次握手
1.连接的建立
在建立连接的时候,客户端首先向服务器申请打开某一个端口(用SYN段等于1的TCP报文),然后服务器端发回一个ACK报文通知客户端请求报文收到,客户端收到确认报文以后再次发出确认报文确认刚才服务器端发出的确认报文(绕口么),至此,连接的建立完成。这就叫做三次握手。如果打算让双方都做好准备的话,一定要发送三次报文,而且只需要三次报文就可以了。如果再加上TCP的超时重传机制,那么TCP就完全可以保证一个数据包被送到目的地。

1)客户端发送 SYN 消息,其中包含服务器的端口和客户端的初始序列号(ISN)到服务器(活动打开)。

2)服务器会发送回SYN和ACK(其中包括的客户端的 ISN + 1)。

3)客户端发送一个 ACK,(其中包括的服务器的 ISN + 1)。

6.2四次挥手关闭连接

结束连接
TCP有一个特别的概念叫做half-close,这个概念是说,TCP的连接是全双工(可以同时发送和接收)连接,因此在关闭连接的时候,必须关闭传和送两个方向上的连接。客户机给服务器一个FIN为1的TCP报文,然后服务器返回给客户端一个确认ACK报文,并且发送一个FIN报文,当客户机回复ACK报文后(四次握手),连接就结束了。

1)客户端发送一个FIN(活动收盘)。这是一个现在半关闭连接。客户端不能再将数据发送,但仍然能够从服务器接收数据。收到此 FIN 服务器进入被动关闭状态。

2)服务器发送一个ACK(这时客户端 FIN 序列 + 1)

3)服务器发送其自身FIN。

4)客户端发送一个ACK(这是服务器的 FIN 序列 + 1)。收到此 ACK 服务器关闭连接。

6.3 win32 Netstat 输出说明

状态说明,Netstat 中所示:

状态说明
------------ --------------------------------------------------------
SYN_SEND 指示活动打开。
SYN_RECEIVED 服务器只接收来自客户端的 SYN。
建立的客户端接收到服务器的 SYN 和建立会话。

侦听服务器已准备好接受连接。

注: 请参阅文档 listen() 套接字调用。TCP 套接字侦听状态中的不会显示-这是 NETSTAT 的限制。有关其他信息,请参阅 Microsoft 知识库中相应的文章:

134404NETSTAT。EXE 不显示 TCP 侦听套接字

FIN_WAIT_1 指示活动结束标记。

TIMED_WAIT 客户端活动关闭后将进入此状态。

CLOSE_WAIT 指示被动关闭。服务器只是从客户端接收到第一个 FIN。

FIN_WAIT_2 客户端只是从服务器接收其第一个 FIN 的确认。

当它发送自己 FIN LAST_ACK 服务器处于此状态。

已关闭的服务器从客户端收到 ACK 并关闭连接。

例如,请考虑以下情形:

套接字应用程序已终止,但 Netstat 报告套接字处于 CLOSE_WAIT 状态。这可能表明客户端正确关闭 (已发送 FIN) 的连接,但服务器仍有打开的套接字。这可能是一个实例(在所有线程或进程) 未关闭套接字的结果。

注: 很正常很长的一段时间内处于 TIME_WAIT 状态有一个套接字。指定的时间是在 RFC793 中作为两次最大段生存期 (MSL)。MSL 被指定为 2 分钟。因此,套接字可能处于 TIME_WAIT 状态长 4 分钟。某些系统为 MSL 实施不同的值 (不超过 2 分钟)。

来自http://support.microsoft.com/kb/137984/zh-cn

不容易啊,终于发完了,5篇文章竟然用了一个上午的时间。有不少内容还不够细致,请大家关注老男孩培训或者老男孩的书籍吧。

本系列博文完整内容共5篇:
第一篇:详解linux netstat输出的网络连接状态信息
http://oldboy.blog.51cto.com/2561410/1184139
第二篇:庖丁解牛获取连接状态数的awk数组命令
http://oldboy.blog.51cto.com/blog/2561410/1184165
第三篇:awk数组命令经典生产实战应用拓展
http://oldboy.blog.51cto.com/blog/2561410/1184177
第四篇:老男孩培训第八节课前awk考试题案例(门户面试题解答) 
http://oldboy.blog.51cto.com/2561410/1184206
第五篇:linux生产服务器有关网络状态的优化措施(告一段落) 
http://oldboy.blog.51cto.com/2561410/1184228

转载于:https://blog.51cto.com/oldboy/1184228

linux生产服务器有关网络状态的优化措施相关推荐

  1. 查看 linux 网络状态命令,Linux操作系统常用的网络状态查询命令

    <Linux操作系统常用的网络状态查询命令>要点: 本文介绍了Linux操作系统常用的网络状态查询命令,希望对您有用.如果有疑问,可以联系我们. 对于做系统运维的工程师来说,经常会在客户那 ...

  2. linux netstat命令:网络状态查看命令

    我们需要先简单了解一下端口的作用.在互联网中,如果 IP 地址是 IP 服务器在互联网中唯一的地址标识,那么大家可以想象一下:我有一台服务器,它有固定的公网 IP 地址,通过 IP 地址可以找到我的服 ...

  3. 收藏的博客 -- 高性能Linux/Windows服务器/C++网络库(★★★★★)

    免费的跨平台SSH和SFTP工具: https://www.putty.org/ -- Windows https://www.chiark.greenend.org.uk/~sgtatham/put ...

  4. Linux C++服务器项目——网络编程2(三次握手、四次挥手、IO多路复用)

    牛客 C++高并发服务器开发 参考笔记 1 TCP三次握手 2 TCP滑动窗口 3 TCP四次挥手 在这里插入图片描述 4 TCP通信并发 5 TCP状态转换 6.端口复用 7 I/O多路复用(I/O ...

  5. Linux C++服务器项目——网络编程1 (socket通信,服务端,客户端)

    牛客 C++高并发服务器开发 参考笔记 1.MAC地址 2 IP地址 2.1 简介 2.2 IP地址编址方式 2.3 子网掩码 3 端口 3.1 简介 3.2 端口类型 4 网络模型 4.1 OSI七 ...

  6. linux系统定时检查网络状态python脚本

    有时需要使用ping命令检查网络通断,如果需要检查的网络主机比较多,使用脚本自动检查就比较方便. vim test.py //创建一个.py文件 test.py代码: 1 #导入所需模块 2 impo ...

  7. linux下常见生产脚本,不看后悔的Linux生产服务器Shell脚本分享(2)

    一.MySQL的热备份脚本 这是MySQL的备份方式之一,脚本如下: #!/bin/bash PATH=/usr/local/sbin:/usr/bin:/bin # The Directory of ...

  8. 详解linux netstat输出的网络连接状态信息

    本博文为老男孩linu培训机构早期的培训教案,特分享以供大家学习参考. 全部系列分为五篇文章,本博文为第一篇: 目录:一.生产服务器netstat tcp连接状态................... ...

  9. linux ss 软件,linux ss 网络状态工具

    ss是Socket Statistics的缩写 查看网络状态,经常用的命令:  watch ss -lnt ss命令用于显示socket状态. 他可以显示PACKET sockets, TCP soc ...

最新文章

  1. LeetCode简单题之三维形体的表面积
  2. Linux 最常用命令整理,建议收藏!
  3. 深度学习以及卷积基础
  4. Jmeter性能测试之后置处理器Json提取器的使用
  5. c++ 浮点数转换成字符串_Python如何处理数据?如何把数据转换成我们想要的?三种处理方法...
  6. java中删除特定后缀名文件
  7. bootstrap file input java,BootStrap-fileinput初识
  8. 中小型研发团队架构落地实践18篇,含案例、代码
  9. 信用评分python_信用评分卡模型在Python中实践(上)
  10. Android锁屏下弹窗的尝试,android开发实战我的云音乐
  11. 如何注册自己的OpenAI/ChatGPT账号?
  12. 骗术一览,大猫小猫都小心了!【转载】
  13. 中学计算机教师人生职业规划,初中教师个人职业发展规划
  14. 提早两天向同事发新年祝福
  15. 2019 前端年终总结(干货满满)
  16. 神经网络入门书籍推荐,神经网络入门经典书籍
  17. Django-模型类
  18. 三维建模 Cinema 4D
  19. 工具分享:mariadb10.2.7软件,包括linux、windows64位、windows32位,请自行下载(附下载链接)
  20. 信息学复赛用linux,信息学复赛考试技巧及注意事项

热门文章

  1. python中的点的作用_Python基础学习中关键点的作用(三),python,重点,之,函数,3
  2. php文件上传接口测试,七牛云存储-用php上传图片,我在本地测试,用php接口,不成功...
  3. html ui 下拉列表,Atitit.ui控件-下拉菜单选择控件的实现select html_html/css_WEB-ITnose...
  4. 点击home键_iPhone小技巧:无Home键iPhone11如何强制重启?
  5. oracle修改redo路径,oracle修改redo log files路径
  6. Python程序:输出斐波那契数列
  7. 【BZOJ1443】游戏Game,博弈+二分图匹配
  8. eds800变频器故障代码_干货|三菱变频器故障剖析,及严重故障和轻微故障判断技巧!...
  9. python autoitlibrary_AutoItLibrary
  10. javascript官方文档_基于Javascript编写的开源Markdown和HTML相互转换器——showdown