用python做测试实现高性能测试工具(3)—优化系统架构

本文涉及的产品
性能测试 PTS,5000VUM额度
简介:
在上一篇中对代码进行了优化,离需求进了一步,但还是很大距离,代码进一步优化我也不知道怎么办了,不会高深的算法。只能从改进系统架构考虑。
   方案3: 改变系统架构
  在开始多进程之前,先简单说明一下python GIL, 之前自己对他也有些误解。因为python GIL的机制存在,同时运行的线程只有一个,但这个线程在不同时刻可以运行在不同的核上,这个调度是由 操作系统完成的,如果你写个死循环,开的线程足够多,是可以把整个系统的CPU消耗干净的,此时你在 Linux下通过top可以看到,us 占用的CPU不大,但sy占用的CPU会很大,CPU主要消耗在系统调度上了。下面是 测试代码,大家可以试试。
import threading
class MultipleThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
while 1:
print "here"
for i in xrange(100):
multiple_thread=MultipleThread()
multiple_thread.start()
multiple_thread.join()
  既然因为GIL的存在,同时只能运行一个线程,那多线程可以提高效率,当然可以!开个3-4个线程可以明显的提高性能,大概能提高个2-3倍左右吧,但继续增加线程就是副作用了。
  系统多线程的系统架构:
  发送和接受都不存在瓶颈,主要瓶颈在在红线部分,decode和 encode部分。多线程改成多进程比较简单, 工作量不大,只要把需要多进程共享的信息,由Queue改成multiprocessing.Queue()就可以了,把继承的DiameterMsgParser(threading.Thread)改成DiameterMsgParser(multiprocessing.Process),有个比较麻烦的是log的输出,python自带的logging模块在多进程下写同一个文件会引起混乱。这个在后面单独说明。
import multiprocessing
import logging
class Worker(multiprocessing.Process):
def __init__(self,mp_name,input_queue):
multiprocessing.Process.__init__(self,name=mp_name)
self.input_queue=input_queue
def run(self):
for i in xrange(100):
self.input_queue.put_nowait(i)
logging.debug(" test "+str(i))
  多线程改成多进程后,在sunfire 4170 (16 core , 2.4G ) 上能支持到5000 meesages (双向), CPU占有率 30-40%,用的是标准的python2.7,因为在solaris上没安装成功pypy,所以在此机器上,我没有测试pypy对性能影响多大。但我在一个2核的linux机器上测试python和 pypy,在多进程的情况下的效率,pypy对效率的提升没有达到倍数的级别,没找到什么原因, 后面有CPU核数比较多的机器再测试下。
最新内容请见作者的GitHub页:http://qaseven.github.io/

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
打赏
0
0
0
0
159
分享
相关文章
DeepSeek 开源周第三弹!DeepGEMM:FP8矩阵计算神器!JIT编译+Hopper架构优化,MoE性能飙升
DeepGEMM 是 DeepSeek 开源的专为 FP8 矩阵乘法设计的高效库,支持普通和混合专家(MoE)分组的 GEMM 操作,基于即时编译技术,动态优化矩阵运算,显著提升计算性能。
212 3
DeepSeek 开源周第三弹!DeepGEMM:FP8矩阵计算神器!JIT编译+Hopper架构优化,MoE性能飙升
Python 高级编程与实战:深入理解设计模式与软件架构
本文深入探讨了Python中的设计模式与软件架构,涵盖单例、工厂、观察者模式及MVC、微服务架构,并通过实战项目如插件系统和Web应用帮助读者掌握这些技术。文章提供了代码示例,便于理解和实践。最后推荐了进一步学习的资源,助力提升Python编程技能。
阿里云云服务诊断工具:合作伙伴架构师的深度洞察与优化建议
作为阿里云的合作伙伴架构师,我深入体验了其云服务诊断工具,该工具通过实时监控与历史趋势分析,自动化检查并提供详细的诊断报告,极大提升了运维效率和系统稳定性,特别在处理ECS实例资源不可用等问题时表现突出。此外,它支持预防性维护,帮助识别潜在问题,减少业务中断。尽管如此,仍建议增强诊断效能、扩大云产品覆盖范围、提供自定义诊断选项、加强教育与培训资源、集成第三方工具,以进一步提升用户体验。
778 243
Python 高级编程与实战:构建自动化测试框架
本文深入探讨了Python中的自动化测试框架,包括unittest、pytest和nose2,并通过实战项目帮助读者掌握这些技术。文中详细介绍了各框架的基本用法和示例代码,助力开发者快速验证代码正确性,减少手动测试工作量。学习资源推荐包括Python官方文档及Real Python等网站。
Python测试淘宝店铺所有商品接口的详细指南
本文详细介绍如何使用Python测试淘宝店铺商品接口,涵盖环境搭建、API接入、签名生成、请求发送、数据解析与存储、异常处理等步骤。通过具体代码示例,帮助开发者轻松获取和分析淘宝店铺商品数据,适用于电商运营、市场分析等场景。遵守法规、注意调用频率限制及数据安全,确保应用的稳定性和合法性。
Python 高级编程与实战:构建微服务架构
本文深入探讨了 Python 中的微服务架构,介绍了 Flask、FastAPI 和 Nameko 三个常用框架,并通过实战项目帮助读者掌握这些技术。每个框架都提供了构建微服务的示例代码,包括简单的 API 接口实现。通过学习本文,读者将能够使用 Python 构建高效、独立的微服务。
Java高级应用开发:基于AI的微服务架构优化与性能调优
在现代企业级应用开发中,微服务架构虽带来灵活性和可扩展性,但也增加了系统复杂性和性能瓶颈。本文探讨如何利用AI技术,特别是像DeepSeek这样的智能工具,优化Java微服务架构。AI通过智能分析系统运行数据,自动识别并解决性能瓶颈,优化服务拆分、通信方式及资源管理,实现高效性能调优,助力开发者设计更合理的微服务架构,迎接未来智能化开发的新时代。
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
在Python开发中,调试是提升效率的关键技能。本文总结了10个实用的调试方法,涵盖内置调试器pdb、breakpoint()函数、断言机制、logging模块、列表推导式优化、IPython调试、警告机制、IDE调试工具、inspect模块和单元测试框架的应用。通过这些技巧,开发者可以更高效地定位和解决问题,提高代码质量。
445 8
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
基于深度混合架构的智能量化交易系统研究: 融合SSDA与LSTM自编码器的特征提取与决策优化方法
本文探讨了在量化交易中结合时序特征和静态特征的混合建模方法。通过整合堆叠稀疏降噪自编码器(SSDA)和基于LSTM的自编码器(LSTM-AE),构建了一个能够全面捕捉市场动态特性的交易系统。SSDA通过降噪技术提取股票数据的鲁棒表示,LSTM-AE则专注于捕捉市场的时序依赖关系。系统采用A2C算法进行强化学习,通过多维度的奖励计算机制,实现了在可接受的风险水平下最大化收益的目标。实验结果显示,该系统在不同波动特征的股票上表现出差异化的适应能力,特别是在存在明确市场趋势的情况下,决策准确性较高。
105 5
基于深度混合架构的智能量化交易系统研究: 融合SSDA与LSTM自编码器的特征提取与决策优化方法
老板点赞!技术人如何用架构优化打赢降本增效战?
大家好,我是小米,一个喜欢分享技术的小架构师。通过亲身经历,我将介绍如何通过架构优化帮助公司降本增效。两年前,我加入一家初创公司,面对成本高企的问题,通过弹性伸缩、微服务化和数据治理等手段,成功降低了40%的技术成本,提升了60%的系统响应速度。希望我的经验能给你启发!关注我的微信公众号“软件求生”,获取更多技术干货。
66 5

热门文章

最新文章