2017-10-08 41 views
0

我正在使用centos7作爲我的服務器,當運行一個php頁面時,我發現mysql使用htop運行了大約4個進程,知道我的線程併發性爲1,並且只有一個組應根據my.conf太運行,但服務器運行使用CPU的處理能力的至少兩個實例中,有時達到2400%的CPU功率mysql的多個實例正在運行 - centos7

my.conf

[client]          
port   = 3306      
socket   = /var/lib/mysql/mysql.sock 


[mysqld_safe]        
innodb_buffer_pool_size=3000M    
innodb_additional_mem_pool_size=8500K  
innodb_log_buffer_size=20G     
innodb_thread_concurrency=10     
innodb_file_per_table=1      

[mysqld]          

log-slow-queries = /var/log/mysql-slow.log 
long_query_time = 1       

local-infile=0        
datadir=/var/lib/mysql      
user=mysql         
symbolic-links=0        

max_connections = 400      
wait_timeout = 60       
query-cache-type = 0       
query-cache-size = 128M      
query_cache_size = 0       
query_cache_limit = 0      
thread_cache_size = 128      
tmp_table_size = 2048M      
max_heap_table_size = 2048M     
join_buffer_size = 40M      
innodb_file_per_table=ON      
table_open_cache = 1024      

port   = 3306      
socket   = /var/lib/mysql/mysql.sock 
skip-external-locking      
key_buffer_size = 1024M      
max_allowed_packet = 268435456    
sort_buffer_size = 2M      
read_buffer_size = 2M      
read_rnd_buffer_size = 8M     
myisam_sort_buffer_size = 512M 
query_cache_size = 0 
thread_concurrency = 1 

innodb_buffer_pool_size = 3024M 
innodb_additional_mem_pool_size = 40M 
innodb_log_buffer_size = 320M 

[mysqldump] 
quick 
max_allowed_packet = 32M 

[mysql] 
no-auto-rehash 

[myisamchk] 
key_buffer_size = 512M 
sort_buffer_size = 512M 
read_buffer = 4M 
write_buffer = 4M 

[mysqlhotcopy] 
interactive-timeout 


table_cache    = 1536 
table_definition_cache = 1536 

HTOP輸出

1743 eseed  20 0 500M 21448 12208 S 0.0 0.1 0:00.15 php-fpm: pool x.com 
1412 mysql  20 0 5578M 815M 10132 S 0.0 2.5 4:26.02 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/lib/mysql/lnw2-g8hk.a 1582 mysql  20 0 5578M 815M 10132 S 0.0 2.5 1:45.77 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/lib/mysql/lnw2-g8hk.a 1518 apache  20 0 2205M 9472 2632 S 0.0 0.0 0:00.20 /usr/sbin/httpd -DFOREGROUND 
1545 apache  20 0 2205M 9472 2632 S 0.0 0.0 0:00.16 /usr/sbin/httpd -DFOREGROUND 
    720 nginx  20 0 38032 3732 1316 S 0.0 0.0 0:00.06 nginx: worker process 
1105 apache  20 0 989M 9668 2952 S 0.0 0.0 0:00.16 /usr/sbin/httpd -DFOREGROUND 
1065 apache  20 0 2205M 9432 2628 S 0.0 0.0 0:00.17 /usr/sbin/httpd -DFOREGROUND 
    382 root  20 0 380M 13424 8004 S 0.0 0.0 0:00.09 php-fpm: master process (/etc/php-fpm.conf) 
1058 apache  20 0 1373M 10056 3044 S 0.0 0.0 0:00.18 /usr/sbin/httpd -DFOREGROUND 
1146 apache  20 0 2205M 9432 2628 S 0.0 0.0 0:00.15 /usr/sbin/httpd -DFOREGROUND 
1427 mysql  20 0 5578M 815M 10132 S 0.0 2.5 0:00.02 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/lib/mysql/lnw2-g8hk.a 1461 mysql  20 0 5578M 815M 10132 S 0.0 2.5 0:44.38 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/lib/mysql/lnw2-g8hk.a 1742 eseed  20 0 381M 9248 2908 S 0.0 0.0 0:00.10 php-fpm: pool dev.x.com 
    952 root  20 0 3835M 10824 3584 S 0.0 0.0 0:00.18 Passenger core 
1432 mysql  20 0 5578M 815M 10132 S 0.0 2.5 0:00.02 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/lib/mysql/lnw2-g8hk.a 
    381 root  20 0 498M 25160 19552 S 0.0 0.1 0:00.11 php-fpm: master process (/opt/plesk/php/7.0/etc/php-fpm.conf) 
1425 mysql  20 0 5578M 815M 10132 S 0.0 2.5 0:00.02 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/lib/mysql/lnw2-g8hk.a 1426 mysql  20 0 5578M 815M 10132 S 0.0 2.5 0:00.02 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/lib/mysql/lnw2-g8hk.a 
+0

我的數據庫表是MYISAM,而不是INNODB,如果它有幫助 – JenuRudan

+0

我猜問題不是服務器mysql,而是內部執行的例程。嘗試解決請求,檢查日誌,表格大小,記憶容量......你需要以這種方式進行調查。問候。 – 2017-10-08 11:01:07

+0

是的,我知道,但爲什麼不止一個實例首先運行? – JenuRudan

回答

1

你在誤解htop。那些是線程,而不是進程。每個連接除了服務器爲了各種操作和家務理由而創建的內部線程之外通常具有線程。嘗試按tF5查看層次結構。

又見Why Does htop Show More Processes than ps?

thread_concurrency是一個空操作,除了在很老的Solaris系統,它僅僅是一個暗示,線程調度。

MySQL消耗的CPU數量直接與其提供的工作量有關。配置中的任何內容都不會導致這種情況或多或少地受到任何有意義的影響。

0

此建議將幫助。要允許DEFAULTS支持您的努力,請從my.cnf/.ini中的[mysqld]部分中刪除以下列表:sort_buffer_size read_buffer_size read_rnd_buffer_size join_buffer_size - 提高(減少)響應時間。爲什麼你會故意讀取8M的read_rnd_buffer_size數據,當你可以用256K的DEFAULT獲得你需要的數據?