Mysql

Centos 7 上的 Mariadb 不會根據 my.cnf 更改最大連接數

  • November 22, 2016

未遵循 my.cnf 中的以下配置。Max_connections 回到 151。請幫忙,因為我有 16GB 的專用記憶體,我想正確使用。

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
#symbolic-links=0

#vish start
open_files_limit = 8000
max_connections = 500
#set-variable=max_connections=500
thread_concurrency = 8
#concurrent_insert=2
thread_cache_size=2000

interactive_timeout=180
wait_timeout=180

max_allowed_packet = 32M
key_buffer_size = 3000M
read_buffer_size = 16M
read_rnd_buffer_size = 4M
bulk_insert_buffer_size = 256M
myisam_sort_buffer_size = 16M
myisam_max_sort_file_size = 256M
myisam_repair_threads = 1
#myisam_recover = 4
max_heap_table_size = 2048M
tmp_table_size = 1024M
table_open_cache = 2000
table_cache = 2000
sort_buffer_size = 128M 
join_buffer_size = 128M 
query_cache_size = 128M 
query_cache_limit = 128M 

#slow_query_log=1
log-slow-queries
long_query_time=2
#log_queries_not_using_indexes=1
slow_query_log_file = /var/log/mariadb/host_name-slow.log

[mysqldump]
user=root
password=*********
#max_allowed_packet = 1024M 

[myisamchk] 
key_buffer_size = 2500M 
sort_buffer_size = 1024M 
read_buffer = 32M
write_buffer = 32M

[innodb]
innodb_buffer_pool_size=3G
innodb_buffer_pool_instance=2
innodb_additional_mem_pool_size=20M
innodb_log_file_size= 512M
innodb_log_buffer_size=16M
innodb_flush_log_at_trx_commit=1
innodb_thread_concurrency=16
#innodb_read_io_threads=16
#innodb_write_io_threads=16
#innodb_io_capacity=2000
#innodb_lock_wait_timeout=120

innodb_flush_method=O_DIRECT
#vish end

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#!includedir /etc/my.cnf.d

你可能會發現極限不在你想的地方。

我在打開文件限制方面遇到了麻煩,這是由 Centos 自己設置的。請參見:

如何永久提高 ulimit ‘open files’ 和 MySQL ‘open_files_limit’

該連結的一些關鍵點:

  • ulimit打開文件的預設值為1024
  • MySQL 將其open_files_limit設置為系統的 ulimit 設置為。
  • MySQL無法將其設置為open_files_limit高於ulimit.

您可以ulimit臨時或永久、全域或為特定使用者提高;有關詳細資訊,請參閱連結。

周圍有更多這樣的資源。

檢查 my.cnf 文件的權限 - ls -l /etc/my.cnf 或 ls -l /etc/mysql/my.cnf

檢查所有者和組,通常在編輯 my.cnf 後它對 root 使用者具有隻讀權限

您可以將所有者更改為 mysql:root 或將 cmd 遮罩更改為 755 之類的內容,最後您將擁有:

root@monitor:~# ls -l /etc/mysql/my.cnf
-rwxr-xr-x 1 mysql root 2539 Nov 27 10:10 /etc/mysql/my.cnf
root@monitor:~#

如果 mysql 使用者無法打開 my.cnf 文件 - 它使用預設值 == 151

引用自:https://dba.stackexchange.com/questions/90351