web-dev-qa-db-ja.com

mysql max_connections変数をどのように計算しますか?

Mysql max_connectionsはどのように計算しますか?

何を考慮に入れていますか?

39
Gabriel Solomon

これを回答として、関連情報とともに投稿します。基本的な式は次のとおりです。

利用可能RAM =グローバルバッファ+(スレッドバッファx max_connections)

max_connections =(使用可能RAM-グローバルバッファー)/スレッドバッファー

バッファとその値のリストを取得するには:

SHOW VARIABLES LIKE '%buffer%';

次に、バッファのリストと、それらがグローバルかスレッドかを示します。

グローバルバッファー:key_buffer_size、innodb_buffer_pool_size、innodb_log_buffer_size、innodb_additional_mem_pool_size、net_buffer_size、query_cache_size

スレッドバッファー:sort_buffer_size、myisam_sort_buffer_size、read_buffer_size、join_buffer_size、read_rnd_buffer_size、thread_stack

28
Derek Downey

警告!これは、MySQL 5.1.xを使用した2011年のものです。自己責任で使用してください

----オリジナルPOST ----

次に、ストアドプロシージャ形式の別の代替式を示します。

DELIMITER //
CREATE PROCEDURE sproc_show_max_memory ( OUT max_memory DECIMAL(7,4))
BEGIN
SELECT ( @@key_buffer_size + @@query_cache_size + @@tmp_table_size + @@innodb_buffer_pool_size + @@innodb_additional_mem_pool_size + @@innodb_log_buffer_size + @@max_connections * ( @@read_buffer_size + @@read_rnd_buffer_size + @@sort_buffer_size + @@join_buffer_size + @@binlog_cache_size + @@thread_stack ) ) / 1073741824 AS MAX_MEMORY_GB INTO max_memory;
END//
DELIMITER ;
CALL sproc_show_max_memory(@show_max_memory);
SELECT @show_max_memory;

MySQLデータベース>バージョン5.1.xを使用していて、特権ユーザーであると想定しています。しかし、必要な数を挿入して最大接続数で遊んで、結果を確認します。

11
randomx

私は単純な計算から得ている数値を見つめています:expected_number_of_requests_per_second * expected_average_request_processing_time * 2。

後で調整するために、私は常に履歴データを備えた監視システムを使用しており、ピークが発生した場合に備えて20%を確保するようにしています。いくつかの接続プーリングを使用している場合(これは通常は良い考えです)は少し複雑です-次に、プールで使用されている接続の数を監視する必要があります。

0
rvs