当前位置: 首页 > news >正文

mysql-数据库性能测试之,连接数测试

以下是针对mysql 数据库的测试,全部是查询测试部分,实际情况模拟会非常复杂。见以下代码。

import threading
import pymysql
import random
# 单库多线程访问,select,正常情况一台机器一个库,因表数量,大小,分布有所不同,还要看模拟 实际业务统计情况
# 包括单表访问,相同select,
# 多表访问,
# 模拟现实场景:多表select, 多表update, select:update = 2:1
# city,country ,countrylanguage,slb_access_log,slb_stat_data
# 连接到MySQL数据库的配置
config = {'host': 'localhost','user': 'root','password': 'liuyunqiu','database': 'world'
}# 模拟高负载的函数
def high_load_function(thread_id):try:connection = pymysql.connect(**config)if connection.open:cursor = connection.cursor()table_list =['city','country','countrylanguage','slb_access_log','slb_stat_data']table = random.choice(table_list)cursor.execute(f"SELECT * FROM {table}")  # 替换为您的表名和查询print(f"Thread {thread_id} - Database version : {cursor.fetchone()}")cursor.close()connection.close()except pymysql.Error as e:print(f"Error {e} in Thread {thread_id}")# 创建并启动多线程
def start_threads(number_of_threads):threads = []for i in range(number_of_threads):thread = threading.Thread(target=high_load_function, args=(i,))threads.append(thread)thread.start()for t in threads:t.join()# 设置并发线程数和启动测试
number_of_threads = 500  # 根据需要调整并发线程数
start_threads(number_of_threads)

##测试结果,共500个连接,其中400个正常返回了,有100个报错,显示:too many connections, 此处也可查看数据库连接数设置,显示151,估计是数据库查询比较简单,表也比较小,占用资源比较快,在同时到达 151时,部分连接报错说是超出连接数被打回。但是可见大部分连接400个还是正常地完成了。

出问题的基本是后100个,

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • flutter 画转盘
  • 面试准备-C++指针和引用的区别
  • 盲盒抽奖源码
  • 【Docker系列】Docker 容器时区设置指南
  • PDF 转Word 开源库
  • K8S - ConfigMap的简介和使用
  • Grafana中的rate与irate以及histogram
  • 【Spark集群部署系列四】Spark on YARN介绍和环境部署(个人笔记,供参考)
  • 聚星文社,绘唐科技AI工具
  • Redis主从同步配置
  • K8S上安装LongHorn(分布式块存储) --use
  • 远程消息传递的艺术:NSDistantObject在Objective-C中的妙用
  • Spring Security 6如何使用?
  • C++(10)类语法分析(1)
  • LLM应用开发实战:打造智能搜索与推荐引擎
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • ➹使用webpack配置多页面应用(MPA)
  • Android框架之Volley
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • HTML-表单
  • Javascript基础之Array数组API
  • JS专题之继承
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • Python 反序列化安全问题(二)
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 百度地图API标注+时间轴组件
  • 程序员最讨厌的9句话,你可有补充?
  • 搭建gitbook 和 访问权限认证
  • 复习Javascript专题(四):js中的深浅拷贝
  • 你真的知道 == 和 equals 的区别吗?
  • 如何设计一个比特币钱包服务
  • 如何学习JavaEE,项目又该如何做?
  • 深度解析利用ES6进行Promise封装总结
  • 深入 Nginx 之配置篇
  • 我这样减少了26.5M Java内存!
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • ​Java并发新构件之Exchanger
  • # include “ “ 和 # include < >两者的区别
  • #NOIP 2014# day.1 T2 联合权值
  • (补)B+树一些思想
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (蓝桥杯每日一题)love
  • (每日一问)设计模式:设计模式的原则与分类——如何提升代码质量?
  • (一)Java算法:二分查找
  • (转) ns2/nam与nam实现相关的文件
  • (转)shell调试方法
  • . NET自动找可写目录
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .Net MVC + EF搭建学生管理系统
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET 回调、接口回调、 委托
  • .NET 使用配置文件