减少Linux下Squid服务器的TIME_WAIT套接字数量

转载 2009年09月09日 11:23:00

原贴:http://blog.s135.com/post/338/

Linux下高并发的Squid服务器,TCP TIME_WAIT套接字数量经常达到两、三万,服务器很容易被拖死。通过修改Linux内核参数,可以减少Squid服务器的TIME_WAIT套接字数量。
  

vi /etc/sysctl.conf


  增加以下几行:

引用
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024    65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000


  说明:
  net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
  net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
  net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
  net.ipv4.tcp_fin_timeout = 30 表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
  net.ipv4.tcp_keepalive_time = 1200 表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
  net.ipv4.ip_local_port_range = 1024    65000 表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。
  net.ipv4.tcp_max_syn_backlog = 8192 表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
  net.ipv4.tcp_max_tw_buckets = 5000 表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,改为5000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。

  执行以下命令使配置生效:

/sbin/sysctl -p

Linux下套接字详解(二)----套接字Socket

在前面我们讲了TCP/IP、TCP和UDP的一些基本知识,但是协议只有一套,而我们系统多个TCP连接或多个应用程序进程必须通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算...
  • gatieme
  • gatieme
  • 2015年06月02日 19:59
  • 8556

Linux下套接字详解(四)----简单的TCP套接字应用(迭代型)

前面我们已经将了TCP/UDP的基本知识,还说了并发服务器与迭代服务器的区别,我们大致了解大多数TCP服务器是并发的,大多数UDP服务器是迭代的 ,即我们在进行数据传送的时候,往往使用服务器与客户但之...
  • gatieme
  • gatieme
  • 2015年06月07日 21:21
  • 4199

select的套接字数量的限制

在很多比较各种网络模型的文章中,但凡提到select模型时,都会说select受限于轮询的套接字数量,这个 数量也就是系统头文件中定义的FD_SETSIZE值(例如64)。但事实上这个算不上真的限制。...
  • jiayichendddd
  • jiayichendddd
  • 2013年03月26日 00:32
  • 1417

Linux 进程通信——本地套接字(2)

Linux和UNIX都拥有一个非常实用的工具--UNIX套接字,或称为本地套接字,它可以被用在进程间通讯(IPC)当中。UNIX套接字的运转机制和Internet套接字类似,主要的区别UNIX套接字只...
  • changli_90
  • changli_90
  • 2013年06月06日 23:35
  • 3878

Linux原始套接字学习总结

Linux网络编程:原始套接字的魔力【上】 http://blog.chinaunix.net/uid-23069658-id-3280895.html 基于原始套接字编程       ...
  • bcbobo21cn
  • bcbobo21cn
  • 2016年05月06日 12:00
  • 1473

Linux下套接字详解(三)----几种套接字I/O模型

参考: 网络编程–IO模型示例 几种服务器端IO模型的简单介绍及实现 网络编程–IO模型示例 背景知识阻塞和非阻塞对于一个套接字的 I/O通信,它会涉及到两个系统对象,一个是...
  • gatieme
  • gatieme
  • 2016年01月31日 16:30
  • 5597

linux中一个简单的TCP套接字程序(2)

该程序是一个虽然简单但是完整的tcp客户端/服务端实例。实现了本机客户与本机服务器的连接建立及相互发送消息。建立连接之后,客户端接收并打印出服务器发送来的数据。服务器打印出客户端的IP地址并向客户端发...
  • xiaolong361
  • xiaolong361
  • 2016年09月14日 15:43
  • 514

基于流式套接字实现文件传输

基于流式套接字实现文件传输设计思路本次基于TCP流传输控制,实现一个文件传输机制,可以传输不同格式的二进制文件。服务器端建立socket的过程创建和初始化参数 WSADATA Ws; ...
  • Aslani
  • Aslani
  • 2017年02月04日 13:17
  • 1028

linux原始套接字详解

一、原始套接字概述   协议栈的原始套接字从实现上可以分为“链路层原始套接字”和“网络层原始套接字”两大类。本节主要描述各自的特点及其适用范围。 链路层原始套接字可以直接用于接收和发送链路层的M...
  • sinat_27261621
  • sinat_27261621
  • 2016年10月13日 10:54
  • 811

linux下简单的原始套接字通信

SOCK_RAW
  • my_zou
  • my_zou
  • 2016年12月20日 15:21
  • 336
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:减少Linux下Squid服务器的TIME_WAIT套接字数量
举报原因:
原因补充:

(最多只允许输入30个字)