我们在安装了 Magento 的地方运行 CentOS DirectAdmin 安装和 MariaDB 10.2.14。
目前我们的数据库在进程运行时经常锁定,因此所有其他进程都在等待当前进程完成。这是一个很大的问题,因为例如,在这种情况下,添加到购物车的过程也在等待,人们无法订购。
如何防止数据库被锁定这么久并解决这个问题?
服务器:
6x Intel Xeon
32GB RAM
500GB SSD
我的.cnf:
[mysqld]
bind-address = 127.0.0.1
local-infile=0
innodb_file_per_table=1
innodb_file_format=barracuda
slow_query_log = 1
slow_query_log_file=/var/log/mysql-log-slow-queries.log
key_buffer = 250M
key_buffer_size = 250M
max_allowed_packet = 128M
table_cache = 512
sort_buffer_size = 7M
read_buffer_size = 7M
read_rnd_buffer_size = 7M
myisam_sort_buffer_size = 64M
tmp_table_size = 190M
query_cache_type = 1
query_cache_size = 220M
query_cache_limit = 512M
thread_cache_size = 150
max_connections = 225
wait_timeout = 300
innodb_buffer_pool_size = 7G
max_heap_table_size =180M
innodb_log_buffer_size = 36M
join_buffer_size = 32M
innodb_buffer_pool_instances = 7
long_query_time = 15
table_definition_cache = 4K
open_files_limit = 60K
table_open_cache = 50767
innodb_log_file_size= 128M
innodb_lock_wait_timeout = 700
最佳答案
关于 my.cnf [mysqld] 部分的建议
以下带# 的开头可禁用或删除以允许默认值满足您的要求 Rick James 在之前的评论中已经提到了其中一些内容。
. key_buffer . key_buffer_size .表缓存 .排序缓冲区大小 .读缓冲区大小 . read_rnd_buffer_size . MyISAM_sort_buffer_size . join_buffer_size . long_query_time . innodb_lock_wait_timeout
进行这些更改或将行添加到您的 my.cnf 中
query_cache_type=0 # from 1 to turn OFF QC and conserve CPU cycles
query_cache_size=0 # from 220M to conserve RAM for more useful work
query_cache_limit=0 # from 512M to conserve RAM for more useful work
thread_cache_size=100 # from 150 V8 refman suggested CAP to avoid OOM
innodb_lru_scan_depth=100 # from 1024 to minimum to conserve CPU every SECOND
innodb_flush_neighbors=0 # from 1 no need to waste CPU cycles when using SSD
innodb_io_capacity_max=10000 # from 2000 since you have SSD
innodb_io_capacity=5000 # from 200 to use more of your SSD capability
如需更多帮助,请查看我的个人资料,clk 网络个人资料以获取联系信息。
关于mysql - 阻止 MariaDB 锁定进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50810836/