转自:http://chenchendefeng.iteye.com/blog/461248
有的网站会在服务器运行一段时间后down掉,有很多原因可能造成这种现象:比如tomcat堆和非堆内存设置不足,程序没能释放内存空间造成内存溢出,或者某些进程一直运行没能释放,造成cup资源大量消耗。
但除了程序本身的原因,还有可能是客服端访问造成(当然这个客户端也包含如蜘蛛软件等搜索引擎),如果服务器和客户端建立的是长链接(可以用"netstat -a"命令查看网络访问信息),这就需要对http响应头的connection做一定的设置。
介绍如下:
1. 解释一下:
在http1.1中request和reponse header中都有可能出现一个connection头字段,此header的含义是当client和server通信时对于长链接如何进行处理。
在http1.1中,client和server都是默认对方支持长链接的, 如果client使用http1.1协议,但又不希望使用长链接,则需要在header中指明connection的值为close;如果server方也不想支持长链接,则在response中也需要明确说明connection的值为close.
不论request还是response的header中包含了值为close的connection,都表明当前正在使用的tcp链接在请求处理完毕后会被断掉。以后client再进行新的请求时就必须创建新的tcp链接了。 HTTP Connection的 close设置允许客户端或服务器中任何一方关闭底层的连接双方都会要求在处理请求后关闭它们的TCP连接。
2.如何在程序中设置:
可以在过滤器中加入:response.setHeader("connection", "close");
与之相关:解决服务器产生大量close_wait问题
要解决这个问题的可以修改系统的参数(/etc/sysctl.conf文件),系统默认超时时间的是7200秒,也就是2小时。
默认如下:
tcp_keepalive_time = 7200 seconds (2 hours)
tcp_keepalive_probes = 9
tcp_keepalive_intvl = 75 seconds
意思是如果某个TCP连接在idle 2个小时后,内核才发起probe.如果probe 9次(每次75秒)不成功,内核才彻底放弃,认为该连接已失效
修改后
sysctl -w net.ipv4.tcp_keepalive_time=30
sysctl -w net.ipv4.tcp_keepalive_probes=2
sysctl -w net.ipv4.tcp_keepalive_intvl=2
经过这个修改后,服务器会在短时间里回收没有关闭的tcp连接。
相关推荐
在深入探讨HTTP协议中的请求头和响应头之前,我们首先简要回顾一下HTTP协议的基本概念。HTTP(Hypertext Transfer Protocol)是用于从万维网服务器传输超文本到本地浏览器的传输协议,它允许数据在客户端和服务器...
4. **Cookie**: 用于维持客户端会话状态,服务器可以通过Set-Cookie响应头设置。 5. **Referer**: 显示用户是从哪个URL点击链接到达当前请求的页面。 6. **Host**: 指定请求的服务器主机名和端口号。 7. **...
Http 消息头中常用的请求头和响应头 Http 消息头是指在 Http 请求和响应中添加的一些附加信息,以便于服务器和客户端之间的交互。这些附加信息可以是请求头、响应头、实体头等。 请求头是指客户端在向服务器发送...
以上是HTTP请求和响应头的详细介绍,这些头信息在HTTP通信中起到关键作用,它们允许客户端和服务器之间交换必要的信息,确保数据的正确传输和处理。了解并正确使用这些头信息对于开发和调试Web应用至关重要。
3. 检查响应头中的`Keep-Alive`字段,确认服务器是否正确设置了keepalive策略。 4. 测试不同负载下服务器的性能,比较启用和禁用keepalive的情况。 通过这些测试,我们可以评估和优化Spring Boot应用的网络性能,...
响应头包含了服务器返回的关于请求的各种信息,如服务器类型、编码方式、缓存控制等。 要获取URL的响应头信息,我们需要使用Java的`java.net`包中的`HttpURLConnection`类。以下是一个简单的示例代码,展示了如何...
`HttpResponse`是一个简单的数据载体,用于存储HTTP响应的相关信息,如响应码、响应头和响应体。在实际项目中,`HttpResponse`可能需要扩展为包含更多的解析和处理功能,如解析JSON或XML数据。 以下是`...
HTTP响应头是服务器返回给客户端的信息,用于提供关于响应的附加信息。 1. **Accept-Ranges**: 表明服务器是否支持指定范围的请求及支持的分段请求类型。例如,`Accept-Ranges: bytes`表示支持字节范围请求。 2. *...
在Java编程中,获取URL响应头的日期信息是一项常见的任务,尤其在进行网络请求和网页爬虫时。这个实例教程将向你展示如何利用Java的HttpURLConnection类来获取指定URL的响应头信息,并从中提取出日期相关的数据。...
5. 设置请求头,如Content-Type、User-Agent等。 6. 发送请求并获取响应码、响应消息和响应内容。 7. 关闭连接。 通过以上步骤,开发者可以实现自定义的HTTP客户端,实现与远程服务的交互。在实际项目中,理解这些...
// 设置响应头以启用gzip压缩 response.setHeader("Content-Encoding", "gzip"); } // 设置Content-Length response.setContentLength(body.length); // 设置Content-Type response.setContentType("text/html;...
// 设置其他请求头,如Content-Type、Authorization等 connection.setRequestProperty("Content-Type", "application/json"); connection.setRequestProperty("Authorization", "Bearer your_token"); if ...
4. 通用头:适用于请求和响应,如Date(消息创建的时间)、Cache-Control(缓存指令)、Connection(控制连接的行为,如keep-alive)等。 在易语言环境中,你可以使用特定的库或函数来处理HTTP协议头。例如,设置或...
通用头域包含请求和响应消息都支持的头域,包括 Cache-Control、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via 等。 * Cache-Control 头域:指定请求和响应遵循的缓存机制。 Cache-Control 头域可以...
在HTTP协议中,请求头和响应头是网络通信中非常重要的一部分,它们承载了客户端与服务器之间交互的关键信息。本文将详细解析这些常见的HTTP头字段及其作用。 1. Accept:这个头字段指定了客户端能够接收的内容类型...
在回调函数中,我们设置了响应的状态码和头信息,然后将响应写入内容并结束输出。 HTTP 请求和响应 在 HTTP 中,请求和响应是两者之间的通信过程。客户端向服务器发送请求,而服务器则返回响应。HTTP 请求由请求行...
在“ConnectionServer.exe”中,这个组件可能被用来连接到特定的服务器地址,向服务器发送请求,并接收响应。开发者可以通过设置其属性,如Host(服务器地址)和Port(端口号),来指定要连接的服务器。 另一方面,...
在.NET编程环境中,尤其是使用C#语言时,`Connection`对象是数据库操作的核心部分,它代表了应用程序与数据库之间的连接。本示例将深入探讨`Connection`属性的使用,帮助你更好地理解和应用这些属性。 首先,`...
HTTP 消息头可以分为四类:通用信息头、请求头、响应头和实体头。通用信息头用于提供与被传输的实体内容无关的信息,例如 Cache-Control、Connection、Data 等。请求头用于提供客户端可以接受的数据类型、压缩方法、...
它们还会大大降低浏览器的速度和响应能力,尤其是在网络连接速度较慢的地方。 在安装进程中,将默认启用保持 HTTP 连接。启用后,保持连接的持续时间是连接超时设置允许的时间。 集成安全性和基于连接的验证服务需要...