用python做测试实现高性能测试工具(4)
作者:网络转载 发布时间:[ 2014/1/7 16:06:18 ] 推荐标签:性能测试 python
在前面一篇中,不知道我文章中有神马关键字,图片总是上传不成功,为了大家看的方便,在这里上传
多线程的系统架构:
多线程改成多进程,只要把红线部分的线程改成多进程即可,但总的进程数好不要超过CPU 核数。
上面解决了系统的性能问题,但写log又引入了问题,多进程写log会引起混乱。
查询了多进程写log 的方案, 主要有2种:
利用多进程的Queue,把log放到统一的有个log queue里面,一个单独的线程写log
起一个单独的socket server,由 这个server来接受log,并负责写log
我觉得这2重方案都太重了,很多写log的地方需要改动了,希望找到一个方案能直接不改动老代码写log的方式,开始考虑的是每个进程单独写一个log,但这样统计数据有点小不方便。 继续探索到,有个开源的项目(https://launchpad.net/python-concurrent-log-handler),已经实现了多进程写log,但目前只是实现了按文件大小RotatingFileHandler, 按时间rotate 的功能还没实现。不过这个已经足够用了。
try:
from cloghandler import ConcurrentRotatingFileHandler as RFHandler
except ImportError:
from warnings import warn
warn("ConcurrentLogHandler package not installed. Using builtin log handler")
from logging.handlers import RotatingFileHandler as RFHandler
rotateHandler = RFHandler("sim.log", "a", 10*1024*1024, 5)
formatter = logging.Formatter('%(asctime)s [%(processName)s %(threadName)s %(levelname)s %(module)s:%(lineno)d] %(message)s')
rotateHandler.setFormatter(formatter)
log = logging.getLogger()
log.addHandler(rotateHandler)
log.setLevel(20)
rotateHandler = RFHandler("sim.log", "a", 10*1024*1024, 5)
log文件名为sim.log, 文件到10M会rotate, 多保留5个文件
formatter = logging.Formatter('%(asctime)s [%(processName)s %(threadName)s %(levelname)s %(module)s:%(lineno)d] %(message)s') 设置log输出的格式, 包括时间,进程名,线程名,模块名字,代码行数
log.setLevel(20) 设置什么级别的log输出, CRITICAL 50; ERROR 40; WARNING 30; INFO 20; DEBUG 10, NOSET 0;
import logging
import time
import multiprocessing
class Customer(multiprocessing.Process):
def __init__(self,mp_name):
multiprocessing.Process.__init__(self,name=mp_name)
def run(self):
while 1:
logging.debug(" I am here")
time.sleep(1)
for i in xrange(2):
mp=Customer("customer"+str(i))
mp.start()
后输出log的例子是:
2013-12-05 21:42:10,961 [customer0 MainThread DEBUG testqueue_old:115] I am here
2013-12-05 21:42:15,361 [customer1 MainThread DEBUG testqueue_old:115] I am here
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11