Squid是一种用来缓冲Internet数据的软件。它是这样实现其功能的,接受来自人们需要下载的目标(object)的请求并适当地处理这些请求。也就是说,如果一个人想下载一web页面,他请求Squid为他取得这个页面。Squid随之连接到远程服务器(比如:http://squid.nlanr.net/)并向这个页面发出请求。然后,Squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时,Squid可以简单地从磁盘中读到它,那样数据迅即就会传输到客户机上。当前的Squid可以处理HTTP,FTP,GOPHER,SSL和WAIS等协议。但它不能处理如POP,NNTP,RealAudio以及其它类型的东西。
注意各系统下的kernal state是不同的。
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套接字拖死。
执行以下命令使配置生效:
sysctl -p (Load in sysctl settings from the file specified or
/etc/sysctl.conf if none given. Specifying - as filename means
reading data from standard input.)
分享到:
相关推荐
在应用这些改动之后,可以通过再次执行`netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'`命令检查TIME_WAIT状态的连接数量,如案例所示,数量已显著减少。 总的来说,调整这些内核参数可以...
2. **允许TCP TIME_WAIT套接字复用**:设置`net.ipv4.tcp_tw_reuse = 1`,允许在某些条件下复用TIME_WAIT套接字,减少其占用的端口资源。 3. **加速TIME_WAIT套接字回收**:设置`net.ipv4.tcp_tw_recycle = 1`,...
解决方法:通过修改Linux内核参数,可以减少linux服务器的IME_WAIT套接字数量。vi /etc/sysctl.conf增加以下几行: 代码如下:net.ipv4.tcp_fin_timeout = 30net.ipv4.tcp_keepalive_time = 1200...
8. `net.ipv4.tcp_max_tw_buckets = 5000`:限制TIME_WAIT套接字的最大数量,超出时将立即清理并记录警告。 这些参数的调整有助于减少TIME_WAIT连接的数量,提高服务器的性能和稳定性。但需要注意的是,不同的...
2. `net.ipv4.tcp_tw_reuse = 1`:允许在TIME_WAIT状态下重用TCP套接字,前提是这样做不会导致冲突。 3. `net.ipv4.tcp_tw_recycle = 1`:启用快速回收TIME_WAIT连接,但这可能会引起与其他网络设备的兼容性问题,...
C语言在Linux下进行网络编程,涉及到的主要接口是套接字API(socket API)。开发者需要理解如何创建套接字(socket()函数),绑定地址(bind()函数),监听连接请求(listen()函数),接受连接(accept()函数)以及...
启用`tcp_tw_reuse`允许重用TIME_WAIT套接字,而`tcp_tw_recycle`则加速TIME_WAIT的回收。不过,`tcp_tw_recycle`可能会引起一些问题,如跨网段连接失败,因此在某些环境中可能需要谨慎启用。 除了上述设置,还有...
**原因**:在某些情况下,即使先前绑定的套接字已经被关闭,端口仍然不能立即被重用,这是因为TCP套接字可能会进入`TIME_WAIT`状态。在该状态下,端口会被保留一段时间(通常是2至4分钟),直到该状态结束,端口才能...
1. Linux内核参数优化:Linux内核支持许多参数来控制TCP/IP协议栈的行为,这些参数包括与TCP连接处理、端口分配、套接字缓冲区大小等相关。通过修改这些参数,可以有效地调整Linux系统对网络请求的处理能力。这些...
本文将深入探讨Linux下的TCP编程,包括TCP套接字(socket)的工作原理、C/S架构的实现以及相关的TCP/Linux优化策略。 首先,TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。它通过三次握手建立连接,并...
`socket`创建套接字,`bind`将套接字绑定到特定地址,`listen`设置服务器监听模式,`accept`接受连接请求,`connect`客户端建立连接,`send`和`recv`发送和接收数据。 六、错误处理API 当发生错误时,可以使用`...
**BSD套接字API**是计算机网络编程中的一个重要概念,源于Berkeley Software Distribution(BSD)系统,后来被广泛应用于各种操作系统,包括Unix、Linux以及Windows等。它为开发者提供了一组标准化的接口,用于实现...
- `SO_REUSEADDR`:允许在TIME_WAIT状态下重用套接字地址,这对于多线程服务器避免等待TIME_WAIT超时特别有用。 - `SO_KEEPALIVE`:在无数据传输时周期性发送探测报文,检查连接是否仍然活跃。 - `TCP_NODELAY`:...
当服务器程序 APACHE 处于 CLOSE_WAIT 状态时,说明套接字是被动关闭的。这是因为如果客户端主动断掉当前连接,那么双方关闭这个 TCP 连接共需要四个 packet:Client —> FIN —> Server、Client <— ACK <— Server...
- **net.ipv4.tcp_max_tw_buckets**:设置TCP TIME_WAIT套接字的桶数,适当调高可以减少TIME_WAIT状态的连接占用资源。 - **net.ipv4.ip_local_port_range**:设置本地端口范围,确保有足够的端口供Nginx创建新连接...
1. **系统资源限制**:每个TCP连接都需要占用内核资源,如套接字缓冲区。过多的连接可能导致内存或CPU资源耗尽。 2. **文件描述符限制**:在Unix-like系统中,每个打开的TCP连接都会占用一个文件描述符。系统默认...
3. **TCP套接字编程**:在Linux中,使用socket API进行TCP编程,包括socket()创建套接字,bind()绑定地址,listen()监听连接,accept()接受连接,connect()发起连接,send()和recv()用于数据传输。 4. **TCP窗口...
1. SO_REUSEADDR:允许立即重用刚关闭的套接字地址,避免TIME_WAIT状态的等待。 2. TCP_NODELAY:禁用Nagle算法,以减少小数据包的延迟。 3. SO_LINGER:控制断开连接时的行为,决定是否发送RST包。 八、安全考虑...