DM数据库学习之路(十九)DM8数据库sysbench部署及压力测试

news2024/9/29 17:22:58
  1. sysbench部署

    1. 安装依赖

yum -y install  make automake libtool pkgconfig libaio-devel vim-common
    1. 上传sysbench源代码

sysbench_tool.tar

    1. 测试是否安装成功

$ /opt/sysbench/sysbench-master-dpi/src/lua

$ ./sysbench --version

sysbench 1.1.0

  1. sysbench测试DM

    1. 测试准备

      1. 生成配置文件

$cd /dmdata/sysbench_tool/sysbench-master-dpi

$ ./autogen.sh

autoreconf: Entering directory `.'

autoreconf: configure.ac: not using Gettext

autoreconf: running: aclocal -I m4

autoreconf: configure.ac: tracing

autoreconf: running: libtoolize --copy

libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'config'.

libtoolize: copying file 'config/ltmain.sh'

libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.

libtoolize: copying file 'm4/libtool.m4'

libtoolize: copying file 'm4/ltoptions.m4'

libtoolize: copying file 'm4/ltversion.m4'

autoreconf: running: /usr/bin/autoconf

autoreconf: running: /usr/bin/autoheader

autoreconf: running: automake --add-missing --copy --no-force

autoreconf: Leaving directory `.'

[dmdba@dm8db01 sysbench-master-dpi]$ pwd

/dmdata/sysbench_tool/sysbench-master-dpi

此步骤会生成配置文件configure

      1. 执行配置文件

X86平台,仅测试DM命令如下:

$cd /dmdata/sysbench_tool/sysbench-master-dpi

$ ./configure --without-mysql --with-dm

checking build system type... x86_64-unknown-linux-gnu

checking host system type... x86_64-unknown-linux-gnu

checking target system type... x86_64-unknown-linux-gnu

checking for a BSD-compatible install... /usr/bin/install -c

checking whether build environment is sane... yes

/dmdata/sysbench_tool/sysbench-master-dpi/config/missing: Unknown `--is-lightweight' option

Try `/dmdata/sysbench_tool/sysbench-master-dpi/config/missing --help' for more information

configure: WARNING: 'missing' script is too old or missing

checking for a thread-safe mkdir -p... /usr/bin/mkdir -p

checking for gawk... gawk

checking whether make sets $(MAKE)... yes

checking whether make supports nested variables... yes

checking whether make supports the include directive... yes (GNU style)

checking for gcc... gcc

checking whether the C compiler works... yes

checking for C compiler default output file name... a.out

checking for suffix of executables...

checking whether we are cross compiling... no

checking for suffix of object files... o

checking whether we are using the GNU C compiler... yes

checking whether gcc accepts -g... yes

checking for gcc option to accept ISO C89... none needed

checking whether gcc understands -c and -o together... yes

checking dependency style of gcc... gcc3

checking how to run the C preprocessor... gcc -E

checking for grep that handles long lines and -e... /usr/bin/grep

checking for egrep... /usr/bin/grep -E

checking for ANSI C header files... yes

checking for sys/types.h... yes

checking for sys/stat.h... yes

checking for stdlib.h... yes

checking for string.h... yes

checking for memory.h... yes

checking for strings.h... yes

checking for inttypes.h... yes

checking for stdint.h... yes

checking for unistd.h... yes

checking minix/config.h usability... no

checking minix/config.h presence... no

checking for minix/config.h... no

checking whether it is safe to define __EXTENSIONS__... yes

checking for gcc... (cached) gcc

checking whether we are using the GNU C compiler... (cached) yes

checking whether gcc accepts -g... (cached) yes

checking for gcc option to accept ISO C89... (cached) none needed

checking whether gcc understands -c and -o together... (cached) yes

checking dependency style of gcc... (cached) gcc3

checking for gcc option to accept ISO C99... none needed

checking how to run the C preprocessor... gcc -E

checking for a sed that does not truncate output... /usr/bin/sed

checking for C compiler vendor... gnu

checking for gcc architecture flag...

checking for x86 cpuid 0 output... 16:756e6547:6c65746e:49656e69

checking for x86 cpuid 1 output... 906ea:1020800:fffa3203:1f8bfbff

checking whether C compiler accepts -march=core2... yes

checking for gcc architecture flag... -march=core2

checking for ar... ar

checking the archiver (ar) interface... ar

checking how to print strings... printf

checking for a sed that does not truncate output... (cached) /usr/bin/sed

checking for fgrep... /usr/bin/grep -F

checking for ld used by gcc... /usr/bin/ld

checking if the linker (/usr/bin/ld) is GNU ld... yes

checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B

checking the name lister (/usr/bin/nm -B) interface... BSD nm

checking whether ln -s works... yes

checking the maximum length of command line arguments... 3145728

checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop

checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop

checking for /usr/bin/ld option to reload object files... -r

checking for objdump... objdump

checking how to recognize dependent libraries... pass_all

checking for dlltool... no

checking how to associate runtime and link libraries... printf %s\n

checking for archiver @FILE support... @

checking for strip... strip

checking for ranlib... ranlib

checking command to parse /usr/bin/nm -B output from gcc object... ok

checking for sysroot... no

checking for a working dd... /usr/bin/dd

checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1

checking for mt... no

checking if : is a manifest tool... no

checking for dlfcn.h... yes

checking for objdir... .libs

checking if gcc supports -fno-rtti -fno-exceptions... no

checking for gcc option to produce PIC... -fPIC -DPIC

checking if gcc PIC flag -fPIC -DPIC works... yes

checking if gcc static flag -static works... yes

checking if gcc supports -c -o file.o... yes

checking if gcc supports -c -o file.o... (cached) yes

checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes

checking whether -lc should be explicitly linked in... no

checking dynamic linker characteristics... GNU/Linux ld.so

checking how to hardcode library paths into programs... immediate

checking whether stripping libraries is possible... yes

checking if libtool supports shared libraries... yes

checking whether to build shared libraries... yes

checking whether to build static libraries... yes

checking for pkg-config... yes

checking for C compiler vendor... (cached) gnu

checking whether to compile with MySQL support... no

checking whether to compile with DM support... yes

checking whether to compile with PostgreSQL support... no

checking for pkg-config... /usr/bin/pkg-config

checking pkg-config is at least version 0.9.0... yes

checking whether to build with system or bundled LuaJIT... bundled

checking whether to build with system or bundled Concurrency Kit... bundled

checking whether SHM_HUGETLB is declared... yes

checking whether O_SYNC is declared... yes

checking for the pthreads library -lpthreads... no

checking whether pthreads work without any flags... no

checking whether pthreads work with -Kthread... no

checking whether pthreads work with -kthread... no

checking for the pthreads library -llthread... no

checking whether pthreads work with -pthread... yes

checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE

checking if more special flags are required for pthreads... no

checking for sqrt in -lm... yes

checking DM C flags... ./configure: line 12735: /dm8: Is a directory

checking DM linker flags... /dm8/include/libdmdpi.a -lrt

checking if dm.h defines DM_OPT_SSL_MODE... checking libaio.h usability... yes

checking libaio.h presence... yes

checking for libaio.h... yes

checking for io_queue_init in -laio... yes

checking if io_getevents() has an old interface... no

checking for ANSI C header files... (cached) yes

checking errno.h usability... yes

checking errno.h presence... yes

checking for errno.h... yes

checking fcntl.h usability... yes

checking fcntl.h presence... yes

checking for fcntl.h... yes

checking math.h usability... yes

checking math.h presence... yes

checking for math.h... yes

checking pthread.h usability... yes

checking pthread.h presence... yes

checking for pthread.h... yes

checking sched.h usability... yes

checking sched.h presence... yes

checking for sched.h... yes

checking signal.h usability... yes

checking signal.h presence... yes

checking for signal.h... yes

checking for stdlib.h... (cached) yes

checking for string.h... (cached) yes

checking sys/aio.h usability... no

checking sys/aio.h presence... no

checking for sys/aio.h... no

checking sys/ipc.h usability... yes

checking sys/ipc.h presence... yes

checking for sys/ipc.h... yes

checking sys/time.h usability... yes

checking sys/time.h presence... yes

checking for sys/time.h... yes

checking sys/mman.h usability... yes

checking sys/mman.h presence... yes

checking for sys/mman.h... yes

checking sys/shm.h usability... yes

checking sys/shm.h presence... yes

checking for sys/shm.h... yes

checking thread.h usability... no

checking thread.h presence... no

checking for thread.h... no

checking for unistd.h... (cached) yes

checking limits.h usability... yes

checking limits.h presence... yes

checking for limits.h... yes

checking libgen.h usability... yes

checking libgen.h presence... yes

checking for libgen.h... yes

checking for off_t... yes

checking whether time.h and sys/time.h may both be included... yes

checking for thread local storage (TLS) class... _Thread_local

checking for __attribute__((format))... yes

checking for __attribute__((unused))... yes

checking for special C compiler options needed for large files... no

checking for _FILE_OFFSET_BITS value needed for large files... no

checking size of size_t... 8

checking size of bool... 1

checking for stdlib.h... (cached) yes

checking for unistd.h... (cached) yes

checking for sys/param.h... yes

checking for getpagesize... yes

checking for working mmap... yes

checking whether strerror_r is declared... yes

checking for strerror_r... yes

checking whether strerror_r returns char *... yes

checking for library containing clock_gettime... none required

checking for alarm... yes

checking for clock_gettime... yes

checking for directio... no

checking for fdatasync... yes

checking for gettimeofday... yes

checking for isatty... yes

checking for memalign... yes

checking for memset... yes

checking for posix_memalign... yes

checking for pthread_cancel... yes

checking for pthread_yield... yes

checking for setvbuf... yes

checking for sqrt... yes

checking for strdup... yes

checking for thr_setconcurrency... no

checking for valloc... yes

checking for pthread_once... yes

checking that generated files are newer than configure... done

configure: creating ./config.status

config.status: creating Makefile

config.status: creating third_party/luajit/Makefile

config.status: creating third_party/concurrency_kit/Makefile

config.status: creating src/Makefile

config.status: creating src/drivers/Makefile

config.status: creating src/drivers/mysql/Makefile

config.status: creating src/drivers/pgsql/Makefile

config.status: creating src/drivers/dm/Makefile

config.status: creating src/tests/Makefile

config.status: creating src/tests/cpu/Makefile

config.status: creating src/tests/fileio/Makefile

config.status: creating src/tests/memory/Makefile

config.status: creating src/tests/threads/Makefile

config.status: creating src/tests/mutex/Makefile

config.status: creating src/lua/Makefile

config.status: creating src/lua/internal/Makefile

config.status: creating tests/Makefile

config.status: creating tests/include/config.sh

config.status: creating snap/snapcraft.yaml

config.status: creating config/config.h

config.status: executing depfiles commands

config.status: executing libtool commands

===============================================================================

sysbench version   : 1.1.0

CC                 : gcc

CFLAGS             : -O3 -funroll-loops  -Wall -Wextra -Wpointer-arith -Wbad-function-cast -Wstrict-prototypes -Wnested-externs -Wno-format-zero-length -Wundef -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wcast-align -Wvla   -pthread

CPPFLAGS           : -D_GNU_SOURCE   -I$(top_srcdir)/src -I$(abs_top_builddir)/third_party/luajit/inc -I$(abs_top_builddir)/third_party/concurrency_kit/include

LDFLAGS            : -L/usr/local/lib

LIBS               : -laio -lm

prefix             : /usr/local

bindir             : ${prefix}/bin

libexecdir         : ${prefix}/libexec

mandir             : ${prefix}/share/man

datadir            : ${prefix}/share

MySQL support      : no

DM support         : yes

PostgreSQL support : no

LuaJIT             : bundled

LUAJIT_CFLAGS      : -I$(abs_top_builddir)/third_party/luajit/inc

LUAJIT_LIBS        : $(abs_top_builddir)/third_party/luajit/lib/libluajit-5.1.a -ldl

LUAJIT_LDFLAGS     : -rdynamic

Concurrency Kit    : bundled

CK_CFLAGS          : -I$(abs_top_builddir)/third_party/concurrency_kit/include

CK_LIBS            : $(abs_top_builddir)/third_party/concurrency_kit/lib/libck.a

configure flags    :

===============================================================================

      1. 编译

$ cd /dmdata/sysbench_tool/sysbench-master-dpi

$ make

编译成功后,在src目录下生成可执行文件sysbench

将sysbench拷贝到src/lua目录下,然后进入/src/lua目录运行sysbench

      1. 环境变量设置

export DM_HOME=/dm8

export PATH=$DM_HOME/bin:$PATH:$DM_HOME/tool:$PATH:HOME/bin:/usr/local/bin

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin

sysbench测试的时候需要依赖dm的dpi驱动

需要设置:LD_LIBRARY_PATH

      1. DM默认测试脚本说明

sysbench的数据库测试脚本在src/lua目录下,以oltp为前缀,脚本是lua脚本,可以自行编辑,编辑保存后不需要编译就可以直接使用。

Internal目录下的lua脚本为基础生成h文件,供后续程序编译使用。修改Internal目录下的lua脚本需要重新编译sysbench脚本。

Oltp_common.lua:最基础的测试脚本,定义了表结构、事务基本操作。其它oltp脚本都是引用oltp_common,将其中query进行组合,实现各种测试场景。最常用3个脚本如下:

oltp_read_write.lua:读写混合性测试,包含查询,更新,删除,插入操作

oltp_read_only.lua:读性能测试,包含查询操作

oltp_write_only.lua:写性能测试,包含更新、删除、插入操作

一般使用oltp_read_write.lua脚本测试数据库的oltp性能,包含了读和写操作。oltp_read_write.lua脚本qps是tps的20倍,一个transaction包含20个query操作,这20个query包含14个read,4个write,2个other.

  • begin:事务开始,计为1个other
  • point_selects:循环10次,计为10个read
  • simple_ranges:计为1个read
  • sum_ranges:计为1个read
  • order_ranges:计为1个read
  • distinct_ranger:计为1个read
  • index_updates: 计为1个write
  • non_index_updates: 计为1个write
  • delete_inserts:包含delete,insert操作,计为2个write
  • commit:事务结束,计为1个other

oltp_read_write.lua脚本说明:

require部分:引用其它lua脚本。Oltp_read_write.lua脚本中的函数定义都在oltp_common.lua脚本,所以需要首先引用。

Prepare_statements部分:对应sysbench测试执行过程中run命令的initializing worker threads部分,对数据库的操作就是建立session后准备各种操作的语句句柄和参数绑定。

Event部分:这部分是测试执行的具体步骤,对应与sysbench的测试执行过程中run命令在threads started后开始的操作。反复执行event统计各种指标。

    1. DM8测试

      1. 基本测试

        1. 数据准备

创建测试表,并插入测试数据

./sysbench oltp_read_write.lua --db-driver=dm --dm-db=localhost:5236 --dm-user=SYSDBA --dm-password=SYSDBA --table_size=250000 --tables=25 --auto-inc=0 --threads=256 --time=180 --report-interval=30 prepare

说明:

oltp_read_write.lua      #lua脚本

--db-driver=dm            #使用DM的驱动

--dm-db=localhost:5236    #DM实例监听端口

--dm-user=SYSDBA          #DM实例用户名

--dm-password=SYSDBA      #DM实例密码

--table_size=250000     #每张表插入25万行条数据

--tables=25             #建25张测试表

--auto-inc=0            #表示主键是否使用自增列。0表示不使用自增列

--threads=256           #表示发起256个并发

--time=180              #表示测试总时长180秒

--report-interval=30    #表示每30秒输出一次测试进度报告

        1. 运行测试

执行测试脚本

./sysbench oltp_read_write.lua --db-driver=dm --dm-db=localhost:5236 --dm-user=SYSDBA --dm-password=SYSDBA --table_size=250000 --tables=25 --auto-inc=0 --threads=256 --time=180 --report-interval=30 run

        1. 清理数据

删除测试表

./sysbench oltp_read_write.lua --db-driver=dm --dm-db=localhost:5236 --dm-user=SYSDBA --dm-password=SYSDBA --table_size=250000 --tables=25 --auto-inc=0 --threads=256 --time=180 --report-interval=30 cleanup

结论:测试环境为笔记本虚拟机,CPU2核,519TPS,10387QPS

可以根据CPU核数先估算TPS,查看机器CPU核数

# cat /proc/cpuinfo | grep "processor" | wc -l

2

物理机每核300-350TPS

虚拟机每核200-250TPS

        1. 参数优化
  1. I/O优化

DIRECT_IO        = 1    #磁盘性能高,内存不足,IO密集

IO_THR_GROUPS    = 128   #磁盘性能高,增加IO线程数目

检查点,减少检查点频率,减少每次刷盘数据量

CKPT_RLOG_SIZE   = 0

CKPT_DIRTY_PAGES = 0

CKPT_FLUSH_RATE  = 1

CKPT_INTERVAL    = 300

减少UNDO_RETENTION

UNDO_RETENTION   = 2

  1. 其它参数优化

ALTER SYSTEM SET 'BUFFER'             =200000   SPFILE;

ALTER SYSTEM SET 'BUFFER_POOLS'       =97       SPFILE;

ALTER SYSTEM SET 'FAST_POOL_PAGES’   =200000   SPFILE;

ALTER SYSTEM SET 'FAST_ROLL_PAGES’   =10000    SPFILE;

ALTER SYSTEM SET 'ENABLE_FREQROOTS'   =2        SPFILE;

ALTER SYSTEM SET 'TRX_DICT_LOCK_NUM’  =1024    SPFILE;

ALTER SYSTEM SET 'MEMORY_MAGIC_CHECK’ =0       SPFILE;

ALTER SYSTEM SET 'ENABLE_MONITOR'     =0        SPFILE;

ALTER SYSTEM SET 'MONITOR_TIME'       =0        SPFILE;

ALTER SYSTEM SET 'PK_WITH_CLUSTER'    =1        SPFILE;

ALTER SYSTEM SET 'FAST_LOGIN'         =1        SPFILE;

ALTER SYSTEM SET 'BATCH_PARAM_OPT     =1        SPFILE;

ALTER SYSTEM SET 'ENABLE_INDEX_FILTER' =1       SPFILE;

ALTER SYSTEM SET 'NEW_MOTION'         =1        SPFILE;

ALTER SYSTEM SET 'MULTI_UPD_OPT_FLAG' =1        SPFILE;

ALTER SYSTEM SET 'DSC_TRX_CMT_LSN_SYNC’    =0      SPFILE;

ALTER SYSTEM SET 'CLT_CONST_TO_PARAM'   =1      SPFILE;

--I0

ALTER SYSTEM SET 'DIRECT_IO'        =1         SPFILE; 

ALTER SYSTEM SET 'IO_THR_GROUPS'    =128       SPFILE; 

--THREADS

ALTER SYSTEM SET 'WORKER_TIIREADS'  =64        SPFILE; 

--WORK THRD STACK SIZE default value is 8192

ALTER SYSTEM SET 'WORK_THRD_STACK_SIZE' =8192  SPFILE; 

--SESSION

ALTER SYSTEM SET 'MAX_SESSIONS' = 10000 SPFILE;

ALTER SYSTEM SET 'MAX_SESSION_STATEMENT' =20000 SPFILE;

--TRANSACTION

ALTER SYSTEM SET 'UNDO_RETENTION'   =2  SPFILE;

--RLOG

ALTER SYSTEM SET 'RLOG_BUF_SIZE'    =512    SPFILE;

ALTER SYSTEM SET 'RLOG_POOL_SIZE'   =256    SPFILE;

ALTER SYSTEM SET 'RLOG_PARALLEL_ENABLE' =1  SPFILE;

ALTER SYSTEM SET 'RLOG_SAFE_SPACE'  =128    SPFILE;

--ALTER SYSTEM SET 'RLOG_CHECK_SPACE’  =1  SPFILE;

--CHECK POINT

ALTER SYSTEM SET 'CKPT_RLOG_SIZE'   =0  SPFILE;

ALTER SYSTEM SET 'CKPT_DIRTY_PAGES' =0  SPFILE;

ALTER SYSTEM SET 'CKPT_FLUSII_RATE' =1  SPFILE;

ALTER SYSTEM SET 'CKPT_INTERVAL'    =300    SPFILE;

ALTER SYSTEM SET 'ENABLE_SPACELIMIT_CHECK'  =1  SPFILE;

--INDEX

ALTER SYSTEM SET 'SORT_BUF_SIZE'    =3  SPFILE;

ALTER SYSTEM SET 'SORT_BLK_SIZE'    =1  SPFILE;

ALTER SYSTEM SET 'SORT_BUF_GLOBAL_SIZE' =100000 SPFILE;

ALTER SYSTEM SET 'SORT_FLAG'    =1  SPFILE;

      1. 脚本测试

vi 88.sh

#!/bin/bash

workdir=$(cd `dirname $0`; pwd)

echo 'sysbench oltp_read_write'

./sysbench --db-driver=dm --dm-db=localhost:5236 --dm-user=SYSDBA --dm-password=SYSDBA --table_size=250000 --tables=25 --events=0 --time=600 --auto_inc=1 --threads=256 oltp_read_write prepare > ${workdir}/oltp_read_write_createtable.log 2>&1

./sysbench --db-driver=dm --dm-db=localhost:5236 --dm-user=SYSDBA --dm-password=SYSDBA --table_size=250000 --tables=25 --events=0 --time=600 --auto_inc=1 --threads=256 --percentile=95 --report-interval=1 oltp_read_write run > ${workdir}/oltp_read_write.log 2>&1

sleep 30

./sysbench --db-driver=dm --dm-db=localhost:5236 --dm-user=SYSDBA --dm-password=SYSDBA --table_size=250000 --tables=25 --events=0 --time=600 --auto_inc=1 --threads=256 --percentile=95 oltp_read_write cleanup > ${workdir}/oltp_read_write_cleanup.log 2>&1

测试结果:

    1. 常见问题

      1. 连接失败,错误代码DM_-70089

错误信息:

ALERT:Error – DM_-70089_Encryption module failed to load

错误原因:

Sysbench测试DM时,未找到所依赖的dm动态库

解决方法:

在sysbench终端,设置LD_LIBRARY_PATH,添加dm的bin目录,或者将dm的bin目录下的动态库拷贝到系统目录。

      1. 连接成功,测试线程初始化失败,错误代码DM_-606

错误信息:

DM_-606_stmt handle to the limit the number of statements or system of memory

错误原因:

Session上的句柄限制,需要调大句柄。例:1个事务仅有2个query,测试表共计25个,每个session要申请2*25=50个句柄用于测试。默认的oltp_read_write.lua脚本中1个事务有11个query,25张测试表默认即11*25=275个语句句柄。

解决方法:

vi dm.ini 增加MAX_SESSION_STATEMENT

      1. 执行configure失败

错误信息:

configure error:mysql_config executable not found

错误原因:

编译支持mysql的sysbench时,没有找到mysql的头文件和驱动。

解决方法:

如果不需要支持mysql测试,那么configure使用参数—without-mysql.

如果需要支持mysql测试,那么需要安装mysql-devel软件包,configure使用参数—with-mysql-includes指定mysql头文件目录,--with-mysql-libs指定libmysqlclient.so文件目录。例如

./configure –with-mysql-includes=/usr/include/mysql –with-mysql-libs=/usr/lib64/mysql/

      1. 测试DM,连接成功,测试线程初始化失败

错误信息:

无效的表或者视图名

错误原因:

没有完成建表和数据插入或者sysbench run使用的参数—tables同prepare过程中使用的—tables参数不一致

解决方法:

先完成建表和数据插入,确认sysbench run使用的参数—tables同prepare过程中使用的—tables参数一致。

      1. 测试DM,连接失败

错误信息:

当前session超过最大值

错误原因:

当前测试数据库连接threads=1000超过dm.ini中MAX_SESSIONS最大值

解决方法:

修改数据库dm.ini中MAX_SESSION值

      1. 测试DM,测试线程初始化失败

错误信息:

FATAL:worker threads failed to initialize within 30 seconds

错误原因:

Sysbench测试中,测试线程初始化的默认时间超过了初始化参数时间值,如--time=30,当遇到网路延时,测试表多,测试线路程较多,一旦超过30秒,就会出现上述错误。

解决方法:

--thread-init-timeout来设置一个合适

的初始化超时时间。

      1. 测试DM,并发大测试表多,初始化失败

错误信息:

Error – DM_-70019

错误原因:

Dmserver同时处理太多连接请求,导致每个连接处理耗时增加,后续连接超时。

解决方法:

vi dm.ini增加参数STARTUP_TIMEOUT=500

注:STARTUP_TIMEOUT表示dpi_login发startup和login消息给服务器之间的超时时间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1485525.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【STK】手把手教你利用STK进行仿真-STK软件基础02 STK系统的软件界面01 STK的界面窗口组成

STK系统是Windows窗口类型的桌面应用软件,功能非常强大。在一个桌面应用软件中集成了仿真对象管理、仿真对象属性参数、设置、空间场景二三维可视化、场景显示控制欲操作、仿真结果报表定制与分析、对象数据管理、仿真过程控制、外部接口连接和系统集成编程等复杂的功能。 STK…

MyBatis源码分析之基础支持层解析器

(/≧▽≦)/~┴┴ 嗨~我叫小奥 ✨✨✨ 👀👀👀 个人博客:小奥的博客 👍👍👍:个人CSDN ⭐️⭐️⭐️:传送门 🍹 本人24应届生一枚,技术和水平有限&am…

录制用户操作实现自动化任务

先上视频!! 流程自动化工具-录制操作绘制流程 这个想法之前就有了,趁着周末时间给它撸出来。 实现思路 从之前的文章自动化桌面未来展望中已经验证了录制绘制流程图的可行性。基于DOM录制页面操作轨迹的思路监听页面点击、输入事件即可&…

蓝桥杯练习题——二分

1.借教室 思路 1.随着订单的增加&#xff0c;每天可用的教室越来越少&#xff0c;二分查找最后一个教室没有出现负数的订单编号 2.每个订单的操作是 [s, t] 全部减去 d #include<iostream> #include<cstring> using namespace std; const int N 1e6 10; int d[…

Linux之相对路径、绝对路径、特殊路径符

相对路径和绝对路径 cd /root/temp 绝对路径写法 cd temp 相对路径写法 1、绝对路径&#xff1a;以根目录为起点&#xff0c;描述路径的一种写法&#xff0c;路径描述以 / 开头。 2、相对路径&#xff1a;以当前目录为起点&#xff0c;路径描述无需以 / 开头。 特殊路径符 如…

cRIO9040中NI9871模块的测试

硬件准备 CompactRIO9040NI9871直流电源&#xff08;可调&#xff09;网线RJ50转DB9线鸣志STF03-R驱动器和步进电机 软件安装 参考&#xff1a;cRIO9040中NI9381模块的测试 此外&#xff0c;需安装NI-Serial 9870和9871扫描引擎支持 打开NI Measurement&#xff06;Automa…

C++之set、multiset

1、set简介 set是一种关联式容器&#xff0c;包含的key值唯一&#xff0c;所有元素都会在插入时自动被排序&#xff0c;其存储结构为红黑树。set只能通过迭代器(iterator)访问。 set和multiset的区别&#xff1a; &#xff08;1&#xff09;set不允许容器中有重复的元素&…

C++_程序流程结构_选择结构_if

程序流程结构 C/C支持最基本的三种程序运行结构&#xff1a;顺序、选择、循环结构 顺序结构&#xff1a;程序按顺序执行&#xff0c;不发生跳转选择结构&#xff1a;依据条件是否满足&#xff0c;有选择地执行相应功能循环结构&#xff1a;依据条件是否满足&#xff0c;循环多…

跟 AI 学 StarRocks:简介

因为要支持公司的 BI 建设&#xff0c;团队引入了 StarRocks 数据库&#xff0c;此前我没有了解过此项技术&#xff0c;不过因为有架构师引入了此项技术栈&#xff0c;就顺便学习一下。 一、什么是 MPP 数据库&#xff1f; MPP 数据库指的是大规模并行处理&#xff08;Massiv…

zotero | 多平台同步 | 坚果云

zotero注册登陆 打开zotero软件&#xff0c;mac电脑打开首选项&#xff0c;如下图所示&#xff1a; 然后点击同步选项&#xff0c;如下图所示&#xff0c;如果已经有账号&#xff0c;请登陆账号&#xff0c;无则注册账号之后再登陆&#xff1b; 注册坚果云账号 注册完坚果…

QT6 libModbus 用于ModbusTcp客户端读写服务端

虽然在以前的文章中多次描述过,那么本文使用开源库libModbus,可得到更好的性能&#xff0c;也可移植到各种平台。 性能&#xff1a;读1次和写1次约各用时2ms。 分别创建了读和写各1个连接指针&#xff0c;用于读100个寄存器和写100个寄存器&#xff0c;读写分离。 客户端&am…

文心一言 VS 讯飞星火 VS chatgpt (206)-- 算法导论15.4 3题

三、设计 LCS-LENGTH的带备忘的版本&#xff0c;运行时间为O(mn)。需要写代码的时候&#xff0c;请用go语言。 文心一言&#xff0c;代码正常运行&#xff1a; LCS-LENGTH&#xff08;Longest Common Subsequence Length&#xff09;问题的带备忘的版本通常指的是使用动态规划…

备考2024年小学生古诗文大会:历年真题15题练习和独家解析

如何提高小学生古诗词的知识&#xff1f;如何激发小学生古诗词的学习兴趣&#xff1f;如何提高小学古诗词的学习成绩&#xff1f;如何备考2024年小学生古诗文大会&#xff1f;... 如果你也在关注这些问题&#xff0c;我的建议是参加每年一度的小学生古诗词大会&#xff08;免费…

金融行业专题|期货超融合架构转型与场景探索合集(2023版)

更新内容&#xff1a; 更新 SmartX 超融合在期货行业的覆盖范围、部署规模与应用场景。新增 CTP 主席系统实践与评测、容器云资源池等场景实践。更多超融合金融核心生产业务场景实践&#xff0c;欢迎下载阅读电子书《SmartX 金融核心生产业务场景探索文章合集》。 面对不断变…

云计算与大数据课程笔记(一)云计算背景与介绍

如何实现一个简易搜索引擎&#xff1f; 实现一个简易的搜索引擎可以分为几个基本步骤&#xff1a;数据收集&#xff08;爬虫&#xff09;、数据处理&#xff08;索引&#xff09;、查询处理和结果呈现。下面是一个概括的实现流程&#xff1a; 1. 数据收集&#xff08;爬虫&am…

Android和Linux的嵌入式开发差异

最近开始投入Android的怀抱。说来惭愧&#xff0c;08年就听说这东西&#xff0c;当时也有同事投入去看&#xff0c;因为恶心Java&#xff0c;始终对这玩意无感&#xff0c;没想到现在不会这个嵌入式都快要没法搞了。为了不中年失业&#xff0c;所以只能回过头又来学。 首先还是…

vue实现水印功能

目录 一、应用场景 二、实现原理 三、详细开发 1.水印的实现方式 2.防止用户通过控制台修改样式去除水印效果&#xff08;可跳过&#xff0c;有弊端&#xff09; 3.水印的使用 &#xff08;1&#xff09;单页面/全局使用 &#xff08;2&#xff09;全局使用个别页面去掉…

MySQL 常用优化方式

MySQL 常用优化方式 sql 书写顺序与执行顺序SQL设计优化使用索引避免索引失效分析慢查询合理使用子查询和临时表列相关使用 日常SQL优化场景limit语句隐式类型转换嵌套子查询混合排序查询重写 sql 书写顺序与执行顺序 (7) SELECT (8) DISTINCT <select_list> (1) FROM &…

18.题目:编号760 数的计算

题目&#xff1a; ###该题主要考察递推、递归 将该题看成若干个子问题 #include<bits/stdc.h> using namespace std; const int N20; int a[N];int dfs(int dep){int res1;for(int i1;i<a[dep-1]/2;i){a[dep]i;resdfs(dep1);}return res; }int main(){int n;cin>…

论文阅读_代码生成模型_CodeLlama

英文名称: Code Llama: Open Foundation Models for Code 中文名称: Code Llama&#xff1a;开放基础代码模型 链接: https://arxiv.org/abs/2308.12950 代码: https://github.com/facebookresearch/codellama 作者: Baptiste Rozire, Jonas Gehring, Fabian Gloeckle, Sten So…