前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >HTTPKeepAlive,开启还是关闭

HTTPKeepAlive,开启还是关闭

作者头像
LA0WAN9
发布于 2021-12-14 00:11:31
发布于 2021-12-14 00:11:31
50200
代码可运行
举报
文章被收录于专栏:火丁笔记火丁笔记
运行总次数:0
代码可运行

所谓「HTTP Keep-Alive」,在维基百科里称为「HTTP Persistent Connection」,说白了就是复用HTTP连接,如此一来理论上客户端的用户体验会更流畅,但是与之相对服务端不得不维持大量的连接。开启还是关闭,这是个问题。

一个经常用来讲解HTTPKeepAlive的例子一般是这样描述的:当我们访问一个包含了若干个图片的网页时,如果HTTPKeepAlive是关闭的,那么页面中每一个图片都会发起一次连接请求;但是如果HTTPKeepAlive是开启的,那么因为可以复用HTTP连接,所以可以节省很多不必要的开销。

听起来不错!不过现在可不是用猫上网的年代了,当今高带宽低延迟的网络让建立HTTP连接不再是什么难事儿,此时访问一个包含了若干个图片的网页时,与其打开一个连接然后串行的请求图片,不如打开多个连接然后并行的请求图片,事实上现代浏览器也都是这么干的,最佳实战甚至倡导通过多域名进一步提升并发数。

此外,再让我们看看某台开启了KeepAlive的Nginx服务器Status结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
shell> curl -s http://127.0.0.1/status
Active connections: 95896
server accepts handled requests
 66542336512 66542336512 67713042963
Reading: 1945 Writing: 82 Waiting: 93869

其中,各项结果的含义如下:

  • Active connections: number of all open connections
  • Server accepts handled requests: nginx accepted 66542336512 connections, handled 66542336512 connections (no one was closed just it was accepted), and handles 67713042963 requests
  • Reading: nginx reads request header
  • Writing: nginx reads request body, processes request, or writes response to a client
  • Waiting: keep-alive connections, actually it is active – (reading + writing)

实际复用HTTP连接的效果如何呢:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
67713042963 / 66542336512 = 1.01 requests per connection

额滴神啊,基本等同于没用!为什么会这样?因为这是一台WebService服务器,客户端只是偶尔访问一次,此时的KeepAlive连鸡肋都不如,为了服务器的性能,关闭它吧!

HTTPKeepAlive,开启还是关闭,大家不妨结合自己的客观情况重新思考一下。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013-02-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Nginx解读内置非默认模块 ngx_http_stub_status_module
http://nginx.org/en/docs/http/ngx_http_stub_status_module.html
星哥玩云
2022/07/24
8650
Nginx中配置开启Nginx Status来查看服务器运行状态
这篇文章主要介绍了Nginx中配置开启Nginx Status来查看服务器运行状态的方法,Nginx Status为Nginx服务器内置的状态页,需要的朋友可以参考下
习惯说一说
2019/08/05
11.7K0
原 Nginx 开启 status 状态功
一、首先检查是否编译相关模块: nginx -V 查看是否存在:  --with-http_stub_status_module 示例: nginx version: nginx/1.8.1 built by gcc 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) built with OpenSSL 1.0.1e-fips 11 Feb 2013 TLS SNI support enabled configure arguments: --prefix=/etc/nginx 
霡霂
2018/06/04
4500
Gentoo下安装Nginx+php
a 表示绑定的ip地址 p 表示端口号 f 表示fcgi的应用程序,在这里是制定php的cgi版本的程序 C 表示spawn的child的个数
EltonZheng
2021/01/22
4140
如何通过浏览器查看nginx服务器状态?
  如何通过浏览器查看nginx服务器状态?本文讲解开启nginx-status的配置方法,并对服务器的参数做了详细讲解,需要的朋友可以参考下。   代码如下:   location /nginx-s
会长君
2023/04/25
2.4K0
nginx开启stub_status模块配置方法
nginx中的stub_status模块主要用于查看Nginx的一些状态信息. 本模块默认没有安装,需要编译安装。nginx开启stub_status模块配置方法如下:
拓荒者
2019/03/11
2.8K0
nginx开启stub_status模块配置方法
Centos7下通过zabbix监控nginx status
系统环境 centos7.4、nginx1.12、zabbix3.4.10 1、安装配置zabbix-server及zabbix-agent。参照CentOS 7 下 Zabbix 3.2 安装https://blog.csdn.net/bbwangj/article/details/77969949 2、在nginx server中启动nginx status。 在nginx在nginx.conf配置文件server{}中添加以下内容: location /nginx_status          {                  stub_status on;                  access_log off;                  allow 127.0.0.1;                  deny all;          }   添加完成后,重启nginx 通过curl获取nginx status,查看其参数值 [root@localhost nginx]# curl http://127.0.0.1/nginx_status Active connections: 2 server accepts handled requests  2 2 3 Reading: 0 Writing: 1 Waiting: 1 active connections – 活跃的连接数量 server accepts handled requests — 总共处理了10942个连接 , 成功创建10942次握手, 总共处理了10942个请求 reading — 读取客户端的连接数. writing — 响应数据到客户端的数量 waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接。 3.在/etc/zabbix/zabbix_agentd.d/上编辑nginx_status.sh脚本,用于zabbix_agent获取数据 #!/bin/bash   HOST="127.0.0.1"   PORT="80"   function ping {       /sbin/pidof nginx | wc -l   }   function active {       /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'   }   function reading {       /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'   }   function writing {       /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'   }   function waiting {       /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'   }   function accepts {       /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'   }   function handled {       /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'   }   function requests {       /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'   }   $1   编辑完成后,运行该脚本进行测试,如获取requets数值。 [root@localhost ~]# chmod a+x nginx_status.sh [root@localhost ~]# ./n
菲宇
2022/12/21
4320
Centos7下通过zabbix监控nginx status
Nginx结构全解析(66)
三.参数 然后请求www.domain.com/nginx-status就行了,下面是结果 Active connections: 5 server accepts handled requests 5970806143 5970806143 7560482010 Reading: 0 Writing: 5 Waiting: 0 Active connections: 对后端发起的活动连接数. Server accepts handled requests: Nginx总共处理了38810620个连接,成
陈不成i
2021/05/14
4710
Nginx状态监控如何启用?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:zbxhhzj@qq.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。 转载本站文章请保留原文链接,如文章内说明不允许转载该文章,请不要转载该文章,谢谢合作。
会长君
2023/04/26
4650
如何启用Nginx状态监控
  编译Nginx的时候添加参数:--with-http_stub_status_module
习惯说一说
2019/04/17
2.3K0
Zabbix监控Nginx性能状态
Nginx在生产环境中的应用越来越广泛,所以需要对nginx的性能状态做一些监控,从而发现故障隐患,Ngnx的监控指标可分为:基本活动指标,错误指标,性能指标。
子润先生
2021/07/08
1.9K1
Nginx服务器启用Status状态页面
Nginx可以通过with-http_stub_status_module模块来监控Nginx服务器的状态信息。
子润先生
2021/07/08
2.5K0
如何为 Nginx 添加一个模块?
这篇文章发布于2013年,介绍如何为nginx添加模块,由于时间久远可能有些内容已经过时,不过"静态添加模块"方法仍然可以使用(从1.9.11版本开始支持load_module动态加载模块),文中的示例为nginx添加 stub_status模块,这个模块用于查看nginx的基本状态信息,对于运维人员来说很有用,建议掌握使用方法。
用户1560186
2019/11/19
1.2K0
Nginx查看并发连接数的2种方法
生产环境中越来越多的项目使用Nginx作为WEB Server,与此同时我们也需要时刻关注Nginx状态,比如查看nginx当前并发连接数,确保正常运行。这篇文章分享下查看Nginx并发连接数的两种方法。
星哥玩云
2022/08/13
10.2K0
Nginx查看并发连接数的2种方法
Nginx基本配置介绍(待完善)
Nginx配置⽂件 Nginx主配置⽂件 /etc/nginx/nginx.conf 是⼀个纯⽂本类型的⽂件,整个配置⽂件是以区块的 形式组织的。⼀般,每个区块以⼀对⼤括号 {} 来表示开始与结束。 Main位于nginx.conf配置⽂件的最⾼层 Main层下可以有Event、HTTP层 HTTP层下⾯有允许有多个Server层, ⽤于对不同的⽹站做不同的配置 Server层也允许有多个Location, ⽤于对不同的路径进⾏不同模块的配置 nginx默认配置语法 user nginx;
友儿
2023/03/13
9570
手把手教你构建一套高逼格 Nginx 集群监控系统!
通过Nginx-status实时获取到Nginx监控数据后,如何和现有监控系统集成?一个很好的解决方案:Nginx+Telegraf+Influxdb+Grafana。
民工哥
2022/10/27
4620
手把手教你构建一套高逼格 Nginx 集群监控系统!
07 . Nginx常用模块及案例
ngx_http_limit_conn_module (nginx的连接频率限制模块可以根据定义的key来限制每个键值的连接数.)
iginkgo18
2020/09/27
5750
Linux使用Nginx配置jsp服务器操作命令
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。 Igor 将源代码以类 BSD 许可证的形式发布。尽管还是测试版,但是,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。
用户7639835
2021/08/26
1.7K0
nginx系列之一:nginx入门
nginx系列之一:nginx入门 nginx系列之二:配置文件解读 nginx系列之三:日志配置 nginx系列之四:web服务器 nginx系列之五: 负载均衡 nginx系列之六:cache服务 nginx系列之七:限流配置 nginx系列之八:使用upsync模块实现负载均衡
全栈程序员站长
2022/09/05
7680
nginx系列之一:nginx入门
企业级Zabbix应用监控实践
Tcp的连接状态对于我们web服务器来说是至关重要的,尤其是并发量ESTAB;或者是syn_recv值,假如这个值比较大的话我们可以认为是不是受到了攻击,或是是time_wait值比较高的话,我们要考虑看我们内核是否需要调优,太高的time_wait值的话会占用太多端口,要是端口少的话后果不堪设想:所以今天我们来学学如何使用Zabbix监控tcp状态
江小白
2018/12/12
2.1K0
相关推荐
Nginx解读内置非默认模块 ngx_http_stub_status_module
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档