V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gouera
V2EX  ›  程序员

web 请求与并发

  •  
  •   gouera · 2013-11-30 11:44:35 +08:00 · 5141 次点击
    这是一个创建于 4012 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近要做web压力测试,但是一直到不懂请求与并发到底是什么意思,他们有什么区别,google之后也没看明白。
    还有怎样去测出web的瓶颈在哪里啊?
    12 条回复    1970-01-01 08:00:00 +08:00
    takwai
        1
    takwai  
       2013-11-30 11:49:58 +08:00
    房间门

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

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

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

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

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

    如果做了这两个还存在瓶颈,考虑一下做负载均衡吧。不过那是架构师要考虑的问题。
    gouera
        7
    gouera  
    OP
       2013-11-30 14:53:46 +08:00
    @lecher 非常感谢,刚开始看HTTP权威指南,不知道你说的这些这本书有没有都提到。
    yakczh
        8
    yakczh  
       2013-11-30 14:56:24 +08:00
    请求就是上电梯的人,并发就是电梯上楼的时候能装多少个人不掉下来
    lecher
        9
    lecher  
       2013-11-30 17:16:59 +08:00
    @gouera http权威指南可以帮助你了解浏览器和webserver都会做什么事情,但是涉及到性能的问题,你还需要看看操作系统原理 计算机组成原理一类的书才能了解更多相关的概念,比如cpu负载,内存占用,磁盘读写一类的事情对程序性能会有什么影响。
    julyclyde
        10
    julyclyde  
       2013-12-01 11:06:24 +08:00
    并发是“同时处于被处理阶段”的请求数
    web请求的处理是需要时间的
    julyclyde
        11
    julyclyde  
       2013-12-01 11:06:51 +08:00
    为什么你在不懂这个的情况下去做这个事情呢?这难道不是虚构需求么?
    gouera
        12
    gouera  
    OP
       2013-12-01 17:34:09 +08:00
    @lecher 有这方面的书籍介绍下吗?自己找太难了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2803 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:51 · PVG 19:51 · LAX 03:51 · JFK 06:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.