`
san_yun
  • 浏览: 2663063 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

从nginx日志读取URL来做性能测试

 
阅读更多

做性能测试的时候都希望能模拟用户的行为,ningx记录了用户的行为,比如nginx一般会记录如下:

 

222.210.49.198 - 209sdj3lufa7sf32 -c2b3lp - [14/Sep/2012:22:59:02 +0800]"GET /search/?page=33&kw=%E6%B5%B7%E8%B4%BC&type=feed&_type= HTTP/1.1" 200 14466 "http://www.duitang.com/search/?kw=%E6%B5%B7%E8%B4%BC&type=feed" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 LBBROWSER"

 

写了一个简单的python脚本从nginx读取URL来做性能测试:

 

# -*- coding: utf-8 -*-
import re
import urllib2
import json
import threading
import Queue
import os

host="http://7199.t.duitang.com"
thread_count = 1
running = True

def check(uri):
   try:
	url = "%s%s"%(host,uri)
        content = urllib2.urlopen(url=url,timeout=2)
	#print '%s %s'%(content.code,uri)
	#print content.info()
	#print content.msg
        #print content.readlines()
	#json.loads(content.readlines())
	#print 'ok'
   except Exception,e:
        #print e
	print '%s %s'%(e,uri)
	#out = StringIO()
        #print_exc(file=out)
        #logger.info("check %s fail %s"%(server,out.getvalue()))

class Executor(threading.Thread):

        def __init__(self,queue):
                threading.Thread.__init__(self)
                self.queue = queue

	def run(self):

                while running:
			url = self.queue.get()
			print queue.qsize()
			check(url)
			self.queue.task_done()		

def analysis(readline,queue):
	r = re.compile("\d+")
	mc_url = re.compile("GET /[a-zA-Z/0-9_?=&]*")
	result = {}
	for read in readline:
		ip=url=http_code=http_time = None
		match =  mc_url.search(read)	
		if match:
			url = str(match.group())[4:].strip()
			queue.put(url)

def clean(a,b):
	print 'exit'
	running=False
	exit(1)

from signal import signal,SIGTERM,SIGINT,SIGQUIT
signal(SIGTERM,clean)
signal(SIGINT,clean)
signal(SIGQUIT,clean)

if __name__ == "__main__":
	queue = Queue.Queue()
	for i  in range(thread_count):
        	t = Executor(queue)
        	t.setDaemon(True)
        	t.start()

	f = open("by_category","r")
	analysis(f.readlines(),queue)
	print "total %s" %queue.qsize()
	queue.join()
	print 'exit'
	running = False
分享到:
评论

相关推荐

    goaccess—nginx 日志分析工具

    总结来说,GoAccess 是一款强大的Nginx日志分析工具,可以帮助运维人员快速了解网站的访问情况,定位问题,优化用户体验。通过其直观的报告和实时的监控,GoAccess 成为了Web服务器管理者的得力助手。对于那些需要...

    nginx网站访问日志可视化

    总的来说,"nginx网站访问日志可视化"项目展示了如何利用Python的处理能力、数据库的存储优势,以及pyecharts的可视化特性,从Nginx日志中挖掘有价值的信息,并以直观的方式呈现出来。这不仅对于系统运维人员监控和...

    Flume采集Nginx日志到新版Hive.rar

    此外,Hive的SerDe(序列化/反序列化)库需要与日志格式匹配,比如使用`org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe`来处理常见的Nginx日志格式。 在Hive中创建表结构,以匹配Nginx日志字段: ```sql ...

    nginx日志切割.rar

    【Nginx日志切割详解】 在Web服务器的日常运维中,日志管理是一项至关重要的任务。Nginx作为一款高性能的HTTP和反向代理服务器,其日志记录功能可以帮助我们监控服务器状态、分析访问流量、排查问题等。然而,随着...

    使用awstats分析nginx日志

    ### 使用Awstats分析Nginx日志 #### Awstats简介 Awstats是一款开源的Web日志分析工具,基于Perl语言开发。它能够提供全面且直观的网站访问统计数据,包括但不限于访问次数、唯一访客数量、访问时间分布、操作系统...

    大数据实践项目 - nginx 日志分析可视化

    总的来说,这个项目结合了大数据处理技术、实时流处理技术以及Web应用开发,提供了一套完整的解决方案,用于从nginx日志中提取价值信息并以直观方式展示,对于学习和提升大数据分析、Web开发以及监控运维能力具有很...

    nginx日志文件切割

    **Nginx日志文件切割**是Web服务器管理中的一个重要环节,主要目的是为了定期归档、管理和优化存储空间。在高访问量的网站环境中,Nginx的日志文件可能会迅速增长,如果不进行适当的切割,可能会导致硬盘空间耗尽,...

    Nginx高性能WEB服务器系列(超级详细)

    ### Nginx 高性能 WEB 服务器系列知识点详解 #### 1. Nginx 入门简介 **Nginx** 是一款广受欢迎的高性能 HTTP 和反向代理服务器,同时也可作为 IMAP/POP3/SMTP 代理服务器。它以其出色的稳定性、丰富的功能集、...

    06_Python3处理Nginx日志.zip

    Nginx日志是记录Web服务器活动的重要工具,其中包含了访问者的信息、请求的URL、响应状态码等关键数据。Python的强大之处在于它提供了丰富的库和工具,使得解析和分析这些日志变得简单易行。 首先,了解Nginx日志...

    python实现的分析并统计nginx日志数据功能示例

    利用python脚本分析nginx日志内容,默认统计ip、访问url、状态,可以通过修改脚本统计分析其他字段。 一、脚本运行方式 python count_log.py -f med.xxxx.com.access.log 二、脚本内容 #!/usr/bin/python # -*- ...

    flink进行nginx日志监控,检测异常访问ip,并将数据发送到业务系统.zip

    本项目结合了Flink的强大功能与机器学习技术,特别是深度学习,来实现对Nginx日志的监控,旨在检测异常访问IP,并将这些信息发送到业务系统,以提升网络安全和性能。 首先,我们需要理解Flink如何处理Nginx日志。...

    实战Nginx取代Apache的高性能Web服务器

    在详细介绍Nginx取代Apache作为高性能Web服务器之前,先来阐述一下这两个Web服务器软件的基础知识以及它们之间的主要区别。Apache是目前使用最广泛的Web服务器软件之一,它是一个开源项目,从1995年就开始活跃在Web...

    海康威视摄像头web端显示方案(Nginx环境测试)

    - `logs`存储Nginx的日志文件,这对于调试和监控服务器状态至关重要。 - `temp`目录用于临时文件,Nginx可能会在这里存储工作文件。 7. **实际操作步骤**: - 配置Nginx:根据海康威视摄像头的RTSP URL修改Nginx...

    nginx通过goaccess生成日志统计报告

    通过对Nginx日志的持续分析,管理员可以发现性能瓶颈,优化服务器配置,提升用户体验。例如,如果发现某个页面访问量大,可能需要考虑缓存策略;如果发现异常访问来源,可能需要加强安全防护。 6. **安全与隐私** ...

    nginx-log-parser:Nginx 服务器日志分析

    1. **读取日志**:从指定的 Nginx 日志文件中读取数据,通常这些文件是文本格式。 2. **解析日志**:使用正则表达式或其他解析策略,将每条日志拆分成单独的字段。 3. **数据处理**:根据需要进行统计计算,例如计算...

    prometheus-nginxlog-exporter:将指标从Nginx访问日志文件导出到Prometheus

    NGINX到Prometheus日志文件导出器 不断读取NGINX日志文件(或任何类似日志文件)并将度量导出到帮助程序工具。内容配置文件高级功能命名空间作为标签自定义标签直通日志来源动态重新贴标签文件球JSON log_format ...

    nginx-1.17.6.7z

    10. **logs**:日志文件夹,Nginx的访问日志和错误日志通常保存在这里,这对于监控服务器状态和调试问题至关重要。 在实际使用中,了解Nginx的配置结构和指令是非常重要的。例如,`server`块用于定义虚拟主机,`...

Global site tag (gtag.js) - Google Analytics