14 Star 81 Fork 23

北京大学-张齐勋 / 移动端开发入门实践

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
HTTP_性能优化.md 5.11 KB
一键复制 编辑 原始数据 按行查看 历史
张齐勋 提交于 2021-05-31 15:32 . update

服务器性能指标

衡量服务器性能的指标,主要有以下几个:

  • a.吞吐量(或TPS、RPS、QPS),提高吞吐量,吞吐量越高,服务器的性能越好!
  • b.并发数,提高并发数,支持的并发数越大,服务器的性能越好!
  • c.响应时间,降低响应时间,响应时间越短,服务器的性能越好!
  • d.资源利用率(CPU、内存、硬盘、网络),合理利用服务器资源,资源使用率不要满载。

性能测试工具

Web Bench

Web Bench是一个简单的web或者web代理服务的基准测试工具。(它)使用fork()模拟多个客户端并且可以发起HTTP/0/9-HTTP/1.1的请求。这个基准测试不是非常符合实际情况,但是可以测试出你的HTTP服务是否可以处理多个客户同时访问而不会把你的机器弄挂掉。这个工具可以获得服务的两个指标:每分钟响应请求数量(pages/min)和每秒钟传输数据量(bytes/sec)

ab命令

ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。ab命令对发出负载的计算机要求很低,既不会占用很高CPU,也不会占用很多内存,但却会给目标服务器造成巨大的负载,其原理类似CC攻击。自己测试使用也须注意,否则一次上太多的负载,可能造成目标服务器因资源耗完,严重时甚至导致死机。

yum install httpd -y   安装Apache
systemctl start httpd   启动安装Apache
		
ab -c100 -n20000 -r  http://39.98.72.34:8080/
	

LoadRunner

LoadRunner 是一种预测系统行为和性能的工业标准级负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试。通过使用LoadRunner , 企业能最大限度地缩短测试时间, 优化性能和加速应用系统的发布周期。企业的网络应用环境都必须支持大量用户,网络体系架构中含各类应用环境且由不同供应商提供软件和硬件产品。难以预知的用户负载和愈来愈复杂的应用环境使公司时时担心会发生用户响应速度过慢, 系统崩溃等问题。这些都不可避免地导致公司收益的损失。Mercury Interactive 的 LoadRunner 能让企业保护自己的收入来源, 无需购置额外硬件而最大限度地利用现有的IT 资源, 并确保终端用户在应用系统的各个环节中对其测试应用的质量, 可靠性和可扩展性都有良好的评价。LoadRunner 是一种适用于各种体系架构的自动负载测试工具, 它能预测系统行为并优化系统性能。LoadRunner 的测试对象是整个企业的系统, 它通过模拟实际用户的操作行为和实行实时性能监测, 来帮助您更快的查找和发现问题。此外,LoadRunner 能支持广范的协议和技术, 为您的特殊环境提供特殊的解决方案。

Apache JMeter

Apache JMeter是一个专门为运行和服务器装载测试而设计的、100%的纯Java桌面运行程序。原先它是为Web/HTTP测试而设计的,但是它已经扩展以支持各种各样的测试模块。它和用于HTTP和SQL数据库(使用JDBC)的模块一起运送。它可以用来测试静止资料库或者活动资料库中的服务器的运行情况,可以用来模拟对服务器或者网络系统加以重负荷以测试它的抵抗力,或者用来分析不同负荷类型下的所有运行情况。它也提供了一个可替换的界面用来定制数据显示,测试同步及测试的创建和执行。

JMeter的工作原理:JMeter可以作为Web服务器与浏览器之间的代理网关,以便捕获浏览器的请求和Web服务器的响应,这样就很容易地生成性能测试脚本,有了性能测试脚本,JMeter就可以通过线程组来模拟真实用户对Web服务器的访问压力,这与LoadRunner的工作原理基本一致。

Locust

Locust是一款易于使用的分布式负载测试工具,完全基于事件,即一个locust节点也可以在一个进程中支持数千并发用户,不使用回调,通过gevent使用轻量级过程(即在自己的进程内运行)。

  • locust的安装依赖Python3.6+以及pip3
        华为云 CentOS8.2 

        pip install locust

        locust -V
import time
import json
from locust import HttpUser, task, between

class QuickstartUser(HttpUser):
    wait_time = between(1, 2.5)

    @task
    def hello_world(self):
        self.client.get("/user/SysClause")
        req = self.client.get("/user/ImgCode/get")
        data2 = json.loads(req.text)
        codeKey=data2["data"]["codeKey"]
        rasKey=data2["data"]["rasKey"]
        print(codeKey)
        print(rasKey)
locust -f locust_files/my_locust_file.py

http://localhost:8089

  • 解决Python.h No such file or directory
  yum search python | grep python-devel
  yum install platform-python-devel.x86_64
JavaScript
1
https://gitee.com/ss-pku/webdev.git
git@gitee.com:ss-pku/webdev.git
ss-pku
webdev
移动端开发入门实践
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891