怎样提高Apache HTTP服务器的性能

怎样提高Apache HTTP服务器的性能,第1张

1. 吞吐率

吞吐率,单位时间里服务器处理的最大请求数,单位req/s

从服务器角度,实际并发用户数的可以理解为服务器当前维护的代表不同用户的文件描述符总数,也就是并发连接数。服务器一般会限制同时服务的最多用户数,比如apache的MaxClents参数。

这里再深入一下,对于服务器来说,服务器希望支持高吞吐率,对于用户来说,用户只希望等待最少的时间,显然,双方不能满足,所以双方利益的平衡点,就是我们希望的最大并发用户数。

2. 压力测试

有一个原理一定要先搞清楚,假如100个用户同时向服务器分别进行10个请求,与1个用户向服务器连续进行1000次请求,对服务器的压力是一样吗?实际上是不一样的,因对每一个用户,连续发送请求实际上是指发送一个请求并接收到响应数据后再发送下一个请求。这样对于1个用户向服务器连续进行1000次请求, 任何时刻服务器的网卡接收缓冲区中只有1个请求,而对于100个用户同时向服务器分别进行10个请求,服务器的网卡接收缓冲区最多有100个等待处理的请求,显然这时的服务器压力更大。

上文中我们介绍了HTTP的特点,根据介绍的特点我们分析下优劣和好坏;

当然上述所说的特点是基于HTTP/1.1版本来说的;

这是HTTP中最为突出的优点,【简单、灵活、易于扩展】;

【灵活】和【易于扩展】这两个特点之间是相辅相成的,因为灵活让HTTP协议变得易于扩展;

反之,因为易于扩展让HTTP协议变得更加灵活;

该特点体现在,HTTP协议中的请求方法、状态码、头字段等信息没有被写死,我们开发人员可以任意定制、扩充或者解释;

同时这个特点有点像设计模式中的【策略模式】,就是HTTP的上层协议的语义没变,具体的下层协议没有限制,可以使用TCP,还可以使用SSL/TLS,甚至是UDP的QUIC;

这也是HTTP协议里另一大优点【应用广泛】;

从简单Web页面到复杂的JSON数据;从PC上的浏览器到手机上的APP,这些地方都在使用HTTP;

从应用领域到开发领域HTTP协议也都得到了广泛的支持;HTTP协议不局限于某一种开发语言或者操作系统,使其也具有了【跨语言、跨平台】的特性;

这个特性对HTTP来说既是优点也是缺点,是一把【双刃剑】

我们上文介绍过,无状态就好比是服务器没有记忆能力,就不需要存储额外的状态信息。这样能减轻服务器的负担,同时能把更多的资源用于对外的服务上;

无状态就意味着服务器都是相同的,可以容易组层集群,通过负载均衡把请求转发到任意一台服务器上,不会因为状态不一致导致处理出错;

针对【无状态】就不会记录客户端的信息,需要身份校验的连续操作,服务器是不知道这些请求的关联,每次都得问一遍身份信息;

HTTP协议理想态是既能【无状态】又能【有状态】不过这样的好事在Cookie技术上得到实现了;

明文传输也是HTTP协议中一把双刃剑;

明文准确的说:协议里传输的报文【header】部分不使用二进制数据,使用的是简单客阅读的文本形式;

HTTP的明文传输,我们可以用浏览器、Charles、Wireshark这样的工具抓包后,可以肉眼容易地查看或者修改,我们开发工作带来了很大的便利;

HTTP报文信息都暴露光天化日之下,在漫长的传输链路上毫无隐私可言;

明文传输只是【机密】方面的一个缺点,在【身份认证】和【完整性校验】这方面HTTP有所欠缺;

HTTPS的出现就是为了解决这个不安全问题;

简单来说就是怎么证明是你,在虚拟网络中HTTP没有提供有效的手段来确认通信双方的真实身份;

不支持该特性,数据在传输过程中很容易被篡改而无法验证真伪;

HTTP的性能 不算差也不够好;

HTTP协议是基于TCP/IP协议的,并且使用了【请求-应答】的通信模式

TCP协议的性能是不差的,能够应付大多数场景;

江湖不再是以前的江湖,现在互联网是【高并发】,不能保证稳定的连接质量,在TCP基础上HTTP协议有时候会表现的不够好;

同时【请求-应答】模式加剧了HTTP性能问题,会出现【对头阻塞】,当顺序发送的请求序列中有一个请求因为某种原因阻塞时,其他在排队的就一直被阻塞了;

不够该问题在HTTP/2和HTTP/3中都得以解决了;后面再说;

网站服务器的压力测试我觉得主要有一些几点。

1.协议这边基本上以http或者https为主了,如果使用其他协议需要分析其打解包的方法。

2.要产生一定的压力,压力源这边一定要有保证。一般都是用机器人来模拟压力,关于机器人的逻辑可以根据具体业务来开发。

3.需要观察在一定压力下,服务器的各项性能指标(cpu,内存,IO,网络流量)进行观察,比如内存是否有泄漏,cpu利用率过高的情况。

4.压力测试应该是一个持续性的过程,在这个过程中需要统计服务器的性能数据,包括tps,以及机器的负载情况等。据此可以分析服务器的瓶颈在何处,后续可以针对优化。

5.目前大部分的服务器都部署在Linux系统上,测试同学还需要掌握相关的Linux命令以便可以更好的测试。

如果你觉得前面的太麻烦,可以来WeTest服务器压力测试高并发,实时性能报表,专家级性能优化建议,目前我们正在做网站压测这一块,你要做的仅仅是填下被测的URL即可,压力源、数据统计这些琐碎的工作交给我们就行了。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/224756.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-08
下一篇2023-04-08

发表评论

登录后才能评论

评论列表(0条)

    保存