Code前端首页关于Code前端联系我们

网站运维:使用python+pycurl查看网站性能指标

terry 2年前 (2023-09-25) 阅读数 45 #后端开发

衡量一个网站好坏的维度有很多,但对于运维人员来说,网站性能指标才是我们更关注的。从用户的角度来看,最直观的感受就是用户输入URL后网站内容打开的速度有多快。由用户向服务器发起请求,然后服务器响应并将数据传送给客户端。了解http协议的朋友应该知道,其中涉及到很多流程。这只能通过以下步骤来实现,所以如果网站出现访问速度问题,应该从整个链路而不是某一方面来排查原因。访问示意图如下:

网站运维:用python+pycurl检查网站性能指标

在本次访问过程中,我们会关注以下几点指标:

  • DNS解析时间消耗
  • 从建立连接到准备传输的时间消耗
  • 时间从建立连接到开始传输的消耗时间
  • 传输结束时的总时间消耗
  • 平均下载速度
  • 返回的HTTP状态码

通过在出现问题时实时监控上述指标,可以快速分析定位问题。那么如何获取这些数据呢?我们将在下面使用 pycurl。 pycurl 包是 libcurl 的 Python 接口,用 C 语言编写,速度非常快。我们看一下我们的具体实现:

import pycurl

import StringIO

def check(urls):

             _CODE,DNS_TIME,CONNECT_TIME ,PRETRANSFER_TIME,START传输时间、总时间、下载速度

url = 'http://' + str(urls)

 c = pycurl.Curl( )♶t.CON.

c.setopt(pycurl.TIMEOUT,5)

c.setopt(pycurl.NOPROGRESS,1)

c.setopt (pycurl.FORBID_REUSE) 尝试:

b = StringIO。字符串IO。 。状态码

DNS_TIME = c.getinfo(c.NAMELOOKUP_TIME) * 1000 #DNS消耗时间

CONNECT_TIME = c.getinfo(c.CONNECT_TIME) * 1000 #建立连接所需的时间

PRETRANSFER_TIME = c.getinfo(c.PRETRANSFER_TIME) * 1000 #建立连接并准备传输所需的时间

STARTTRANSFER_TIME = c.getinfo(c.STARTTRANSFER_TIME ) ) * 1000 #建立连接进行传输消耗

               TOTAL_TIME = c.getinfo(c.TOTAL_TIME) * 100                                                                    c.close ()

pycurl.error 除外,错误:

  返回 HTTP_CODE , DNS_TIME, CONNECT_TIME,PRETRANSFER_TIME, STARTTRANSFER_TIME,TOTAL_TIME,SPEED_DOWNLOAD

) as open f.write('HTTP_CODE, DNS _TIME,CONNECT_时间、预传输时间、开始传输时间、总时间、速度下载' + '\ n')

res = check('www.mindg.cn')

f.write(str(res) 脚本中我只得到了一些核心指标,当然pycurl还有更多功能除了这些之外,如果有需要的话,还可以得到更详细的指标,比如平均上传速度、HTTP头大小等,有需要的朋友可以自己研究一下。我不会过多解释剧本。我在关键行添加了注释,最后将获得的数据写入文本中。该脚本可以定期执行,实时获取最新数据。这个脚本在要求不高的场景下使用还是可以的,但这只是我们自动化运维的第一步,因为最好的方式还是通过Web。页面实时显示各站点状态,方便查看。要实现一个基本的网站,有几个问题需要我们思考和解决:

  1. 获得的数据必须进行存储,即有一个存储操作。由于站点不断增加,并且在后台运行,出于效率考虑,必须使用并发执行
  2. 前台方面:​​​​​​​如果要在接收中显示存储的数据,就需要ajax
  3. 前台显示的页面应该能够自动更新并显示最新数据
  4. 前端应该提供一个表单供用户添加URL
  5. 当然,为了好看,我们还需要使用boostrap以及其他类似的前端框架。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门