c3p0和druid性能测试过程中sybase卡死的问题解决过程记录

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
性能测试 PTS,5000VUM额度
简介:

起因

近期公司打算把之前项目中的c3p0数据库连接池更换为druid,在给出替换方案前,需要先给出测试数据证明druid性能优于c3p0,于是便写了个demo进行对比测试。
一开始先要确定配置的没有问题,起码先要可以操作数据,就运行了一下测试方法。由于运行的时候其他事耽误了一下,就跑了10min,然后插入了86万条数据到sybase数据库中。
在正式测试之前我打算把表中原有数据清空,然后便遇到了数据库卡死的情况,使用delete、drop均是如此。
在解决这个卡死的问题时,又发现了原本思路上的问题,总结大致如下。

问题分析

要进行两个连接池组件的对比测试,就需要保证数据库的前提条件是一样的,起码要相似,我一开始想的就是清空数据,清空数据的操作是delete,但是这个思路存在两个问题

问题一

delete操作删除数据并不会清除之前占用的空间,如果真的这样做了,那么测试的前提条件实际上是不一样的。

解决办法

因此,在我这次测试的场景中,清空数据的操作应该使用truncate,这个操作不仅会清空数据,还会清空这些数据占用的空间以及相应索引占用的空间。
只有这样才能更好的保证连接池组件测试前,数据库条件更接近,使外部环境的影响降低到更小。

问题二

但是,即便清空了数据表的数据,也清空了数据表的空间和索引占用的空间,还是存在着一个问题,那就是数据库日志的问题。
sybase在进行insert操作的时候会写日志,那么如果日志一直在增加,势必降低日志写入的性能,也就整体上降低了数据入库操作的性能,所以还应该每一次测试前都在清空数据的同时,也清空日志。
那么日志的问题,也是导致一开始所说删除86万数据使sybase卡死的主要原因了。
sybase在delete操作时,也会写日志,而这个日志的大小是有默认值的,并且不会自动释放。
由于我之前对数据库进行了很多操作,长达几个月的操作都没有清过日志,所以导致这一次insert八十多万数据后日志空间不足,然后再delete时sybase卡死。

解决办法

对于日志空间不足的问题,有两种解决办法,一是扩容,二是清日志,我这次选择的就是第二种,因此也只记录一下第二种。
首先,需要确定是否真的是日志空间不足,查询的命令如下:


sp_spaceused syslogs

如果确定了确实是日志空间不足了,那么就可以再使用如下命令清除历史日志:

dump transaction dbname with truncate_only

清除日志的操作并不唯一,上述清日志的命令是比较安全的,会进行一些事物检查,因此性能就不如下边这条操作,而下边这条性能会变快,但是相对而言就没有那么安全,相当于是强制删除。

dump transaction dbname with no_log
相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
druid Java 测试技术
Druid、C3P0、Tomcat Pool的性能测试与选型
    数据库连接池是每个使用数据库项目需要选择的,但是现在有C3P0、Druid、Tomcat Jdbc Pool,三种类型。为了测试一下每种连接池的性能,写了一个小程序,对数据库进行测试。      C3P0      c3p0-0.9.1.2.jar      Druid      druid-1.0.11.jar      Tomcat Jdbc Pool      comm
1399 0
|
2月前
|
JSON JavaScript 测试技术
Postman接口测试工具详解
Postman接口测试工具详解
73 1
|
4天前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~
|
7天前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~
|
7天前
|
SQL Java 测试技术
SpringBoot单元测试快速写法问题之PorkService 接口中的 getPork 方法的作用如何解决
SpringBoot单元测试快速写法问题之PorkService 接口中的 getPork 方法的作用如何解决
|
9天前
|
XML Web App开发 数据挖掘
Postman接口测试工具全解析:功能、脚本编写及优缺点探讨
文章详细分析了Postman接口测试工具的功能、脚本编写、使用场景以及优缺点,强调了其在接口自动化测试中的强大能力,同时指出了其在性能分析方面的不足,并建议根据项目需求和个人偏好选择合适的接口测试工具。
15 1
|
2月前
|
存储
Postman 接口测试配置 Pre-request Script
Postman 接口测试配置 Pre-request Script
85 5
Postman 接口测试配置 Pre-request Script
|
9天前
|
Web App开发 JSON 测试技术
精通Postman接口测试:关联技术与自动化实践指南
这篇文章详细介绍了如何使用Postman进行接口测试,包括关联技术、自动化实践,以及如何通过环境变量和全局变量解决接口之间的关联性问题。
12 0
精通Postman接口测试:关联技术与自动化实践指南
|
23天前
|
SQL 安全 测试技术
[go 面试] 接口测试的方法与技巧
[go 面试] 接口测试的方法与技巧
|
9天前
|
JSON jenkins 测试技术
Python接口自动化测试框架(工具篇)-- 接口测试工具HTTPRUNNER
本文介绍了Python接口自动化测试框架HTTPRunner,包括其安装、使用方法,并通过实际操作演示了如何利用HTTPRunner进行接口测试,同时还探讨了HTTPRunner作为接口自动化测试解决方案的可能性和实用性。
23 0

热门文章

最新文章

下一篇
云函数