MariaDB 10.2性能调整-锁定等待超时问题

问题描述 投票:1回答:1

我有4个实例数据库集群(其中2个是mariadb 10.2服务器,其中2个是garbd服务器)我们在数据库中使用大量更新查询,处理一个巨大的表,其中一些表具有超过2000万条记录。另外,我们有很多使用数据库的Java应用程序,这些线程通常在表中进行“更新”过程。在peak_time中,我们使用大约200个线程。

我们的问题是我们的应用程序中有“死锁”。我相信我可以通过对数据库配置进行一些性能调整来弄清楚。我的最后一个配置如下;

DB1:x.x.x.x

DB2:y.y.y.y

Garbd-1:w.w.w.w

Garbd-2:z.z.z.z

DB-1:my.cnf

[client-server]

socket=/app/mysql/mysql.sock

port=3306

[mysqld]

user=mysql

port=3306

bind-address=0.0.0.0

socket=/app/mysql/mysql.sock

skip-name-resolve

lower_case_table_names=1

server-id=1

event-scheduler=ON

datadir=/app/mysql

pid-file=/app/mysql/db1.pid

log-error=/app/mysql/db1.err

log_bin_trust_function_creators=1

query_cache_type=0 

query_cache_size=0

#query_cache_limit = 4M

default_table_type = InnoDB

table_open_cache = 4096

open_files_limit = 8192

max_connections = 800

wait_timeout=100

interactive_timeout=100

#net_read_timeout=3600

#net_write_timeout=3600

max_heap_table_size=64M

tmp_table_size=64M

thread_cache_size=256

sort_buffer_size = 2M

join_buffer_size = 256K

read_buffer_size=128K

read_rnd_buffer_size = 256M

transaction-isolation=READ-COMMITTED

log_warnings

slow_query_log

long_query_time=5

# Physical RAM is 32G (8-core)

innodb_buffer_pool_size =24G

innodb_buffer_pool_instances=6

key_buffer_size=512M

nnodb_write_io_threads=8

innodb_read_io_threads=8

innodb_thread_concurrency = 16

#innodb_data_file_path = ibdata1:1G:autoextend

#innodb_autoextend_increment=128M

#innodb_file_per_table

innodb_flush_log_at_trx_commit=2

#sync_binlog=1

innodb_log_buffer_size = 16M

innodb_log_file_size = 2G

innodb_max_dirty_pages_pct = 80

innodb_flush_method=O_DIRECT

innodb_lock_wait_timeout = 120

binlog_format=ROW

innodb_autoinc_lock_mode=2

[mysqldump]

quick

max_allowed_packet = 512M

[mysql]
no-auto-rehash

[mysqld_safe]

datadir=/app/mysql

pid-file=/app/mysql/db1.pid

log-error=/app/mysql/db1.err

[mariadb-10.2]

wsrep_on=ON

wsrep_provider=/usr/lib64/galera/libgalera_smm.so

wsrep_provider_options="gcache.size=10G;gmcast.listen_addr=tcp://0.0.0.0:4567;socket.checksum=2"

wsrep_cluster_address="gcomm://10.92.221.215,10.92.221.216,10.92.223.215,10.92.223.216"

wsrep_cluster_name='galera_cluster'

wsrep_node_address='10.92.221.215'

wsrep_node_name='ivrocsdbp00'

wsrep_sst_method=rsync

wsrep_sst_auth=sst_user:dbpass

这些也在第二台服务器中配置,服务器ID = 2,并且db2.pid和db2.err也进行了更改。

这些更改是否可以解决我的问题?

我想知道这些参数配置正确吗?

我们在服务器中有32 GB RAM(8核)。

感谢您的帮助。

mysql mariadb database-performance database-deadlocks my.cnf
1个回答
0
投票

我猜测nnodb_write_io_threads是一个错字,因为mysqld不会以它开头。

© www.soinside.com 2019 - 2024. All rights reserved.