web 请求与并发

2013-11-30 11:44:35 +08:00
 gouera
最近要做web压力测试,但是一直到不懂请求与并发到底是什么意思,他们有什么区别,google之后也没看明白。
还有怎样去测出web的瓶颈在哪里啊?
5019 次点击
所在节点    程序员
12 条回复
takwai
2013-11-30 11:49:58 +08:00
房间门

请求:一秒可以进去3个人。
并发:同一时间能否进去3个人?
wodemyworld
2013-11-30 12:48:05 +08:00
网络基础不行
gouera
2013-11-30 13:26:18 +08:00
@takwai 请求是速度与CPU有关, 并发是大小,与内存有关是吗?
lecher
2013-11-30 13:45:44 +08:00
请求是每秒执行完的总数,并发是发起请求的用户数。
性能测试中每秒执行的总数不能完全体现系统的负载能力,所以根据实际场景还需要模拟并发量,就是多个用户同时请求同一个资源,系统是否能抗住负载。
web的瓶颈一般都在程序和数据库:
多用户同时发起请求时 web server是否能在限定的延时内接住所有请求
为保存这些用户会话所占用的网络联接数有多少,web server 是否都能保持住,检索会话的时间是多少
为响应请求的数据,程序需要开辟多少内存来保存数据
为处理请求,需要向数据库请求多少次数据
ORM模块支持多少并发向数据库提交请求
数据库在并发请求下的处理延时有多少
同时向数据库请求数据会占用多少内存
程序处理请求占用多少cpu资源
程序处理请求的延时有多少

这些数据颗粒度可能太细,没有定制好工具要拿颗粒度那么细的数据估计不容易。
那就监控进程的内存占用,进程的cpu占用率,webserver 响应时间。
进程的内存占用可以大致了解数据库占用多少内存,程序占用多少内存,webserver占用多少内存
进程的cpu占用率同样
webserver的响应时间大致可以了解请求处理的总时长。

工具分两种,压力源和监控
压力源要么自己写,业务不复杂的话用apache的ab去做也不错。企业级的loadrunner之类的很专业。
监控那就看实际场景了。简单的直接用系统内置的应用来看看,需要出报告的,就找几个监控软件配置上去做图表。
9hills
2013-11-30 13:58:24 +08:00
@gouera 「请求是速度与CPU有关, 并发是大小,与内存有关是吗?」

这个理解完全错误
lecher
2013-11-30 14:07:03 +08:00
楼主肯定是基础知识积累的还不够,浏览器的通信机制,渲染流程;程序运行的处理流程;webserver的通信机制,处理请求的流程;数据库查询的处理流程这些基本的概念都没有理解.要做性能测试分析系统瓶颈不现实,如果确实看不懂,还是退一步,先回去看看更基础的概念吧,磨刀不误砍柴功的。

小应用其实做好这几个已经可以解决大部分的瓶颈问题了:
提高web server 接受并发请求的能力,用有epoll机制的web server。
增加处理的进程,在web server配置开多个进程同时处理请求。
降低数据库查询请求,用redis mongodb之类的内存数据库做缓存,保存查询结果到内存中。

如果做了这两个还存在瓶颈,考虑一下做负载均衡吧。不过那是架构师要考虑的问题。
gouera
2013-11-30 14:53:46 +08:00
@lecher 非常感谢,刚开始看HTTP权威指南,不知道你说的这些这本书有没有都提到。
yakczh
2013-11-30 14:56:24 +08:00
请求就是上电梯的人,并发就是电梯上楼的时候能装多少个人不掉下来
lecher
2013-11-30 17:16:59 +08:00
@gouera http权威指南可以帮助你了解浏览器和webserver都会做什么事情,但是涉及到性能的问题,你还需要看看操作系统原理 计算机组成原理一类的书才能了解更多相关的概念,比如cpu负载,内存占用,磁盘读写一类的事情对程序性能会有什么影响。
julyclyde
2013-12-01 11:06:24 +08:00
并发是“同时处于被处理阶段”的请求数
web请求的处理是需要时间的
julyclyde
2013-12-01 11:06:51 +08:00
为什么你在不懂这个的情况下去做这个事情呢?这难道不是虚构需求么?
gouera
2013-12-01 17:34:09 +08:00
@lecher 有这方面的书籍介绍下吗?自己找太难了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/91244

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX