Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Excerpt

If you run a large Squirro cluster, you might run into MySQL connection issue.

 

These can show like this:

Code Block
UnknownError: (500, u"(OperationalError) (1040, 'Too many connections') None None")

Locate  the cluster leader

You first want to investigate the leader and set the new value there.

Code Block
curl -s http://localhost:81/service/cluster/v0/leader/cluster -H "Accept: application/json" | python -mjson.tool | grep electionLeader

Log into that machine.

How many connections are allowed currently?

As root, run:

Code Block
echo "SHOW VARIABLES" | mysql | grep max_connections

Default value is:

Code Block
max_connections	151

Show the active connections

As root, run:

Code Block
echo "show processlist" | mysql

Sample output:

Code Block
Id     	User   	Host   	db     	Command	Time   	State  	Info
8      	repl   	192.168.100.18:46496   	NULL   	Binlog Dump    	1024493	Has sent all binlog to slave; waiting for binlog to be updated 	NULL
4728   	repl   	192.168.100.16:44756   	NULL   	Binlog Dump    	240336 	Has sent all binlog to slave; waiting for binlog to be updated 	NULL
5878   	filtering      	192.168.100.16:52150   	filtering      	Sleep  	6764   		NULL
5879   	filtering      	192.168.100.16:52152   	filtering      	Sleep  	6737   		NULL
5880   	filtering      	192.168.100.16:52154   	filtering      	Sleep  	6765   		NULL
5892   	configuration  	192.168.100.16:52180   	configuration  	Sleep  	15947  		NULL
5907   	fingerprint    	192.168.100.16:52684   	fingerprint    	Sleep  	15918  		NULL
5908   	fingerprint    	192.168.100.16:52688   	fingerprint    	Sleep  	15915  		NULL
5909   	fingerprint    	192.168.100.16:52692   	fingerprint    	Sleep  	15913  		NULL
5910   	fingerprint    	192.168.100.16:52784   	fingerprint    	Sleep  	15918  		NULL
5911   	fingerprint    	192.168.100.16:52788   	fingerprint    	Sleep  	15918  		NULL
5912   	filtering      	192.168.100.16:53224   	filtering      	Sleep  	6737   		NULL
5913   	filtering      	192.168.100.16:53254   	filtering      	Sleep  	6737   		NULL
5951   	user   	192.168.100.16:55732   	user   	Sleep  	6737   		NULL
5952   	user   	192.168.100.16:55750   	user   	Sleep  	6736   		NULL
5953   	user   	192.168.100.16:55752   	user   	Sleep  	6736   		NULL
5954   	user   	192.168.100.16:55762   	user   	Sleep  	6737   		NULL
5955   	user   	192.168.100.16:55772   	user   	Sleep  	6810   		NULL
5956   	topic  	192.168.100.16:55774   	topic  	Sleep  	6810   		NULL
5957   	user   	192.168.100.16:55786   	user   	Sleep  	6737   		NULL
5958   	user   	192.168.100.16:55790   	user   	Sleep  	6810   		NULL
5959   	topic  	192.168.100.16:55796   	topic  	Sleep  	6737   		NULL
5960   	topic  	192.168.100.16:55826   	topic  	Sleep  	6737   		NULL
5961   	topic  	192.168.100.16:55828   	topic  	Sleep  	6737   		NULL
5962   	topic  	192.168.100.16:55842   	topic  	Sleep  	6737   		NULL
5963   	topic  	192.168.100.16:55872   	topic  	Sleep  	6736   		NULL
5964   	topic  	192.168.100.16:55888   	topic  	Sleep  	6736   		NULL
5981   	filtering      	192.168.100.18:49246   	filtering      	Sleep  	653    		NULL
5982   	filtering      	192.168.100.18:49248   	filtering      	Sleep  	1357   		NULL
5983   	filtering      	192.168.100.17:57760   	filtering      	Sleep  	655    		NULL
5984   	sourcer	192.168.100.16:56482   	sourcer	Sleep  	2665   		NULL
5985   	filtering      	192.168.100.18:49274   	filtering      	Sleep  	653    		NULL
5986   	sourcer	192.168.100.18:49300   	sourcer	Sleep  	2056   		NULL
5987   	sourcer	192.168.100.17:57808   	sourcer	Sleep  	1999   		NULL
5988   	feed   	192.168.100.16:56484   	feed   	Sleep  	1634   		NULL
5989   	scheduler      	192.168.100.16:56486   	scheduler      	Sleep  	1634   		NULL
5990   	scheduler      	192.168.100.17:57824   	scheduler      	Sleep  	1601   		NULL
5991   	filtering      	192.168.100.17:57828   	filtering      	Sleep  	655    		NULL
5992   	feed   	192.168.100.18:49324   	feed   	Sleep  	1391   		NULL
5993   	feed   	192.168.100.17:57836   	feed   	Sleep  	1389   		NULL
5994   	filtering      	192.168.100.17:57840   	filtering      	Sleep  	1305   		NULL
5995   	scheduler      	192.168.100.18:49332   	scheduler      	Sleep  	1211   		NULL
5996   	filtering      	192.168.100.16:56488   	filtering      	Sleep  	688    		NULL
5997   	root   	localhost      	NULL   	Query  	0      	NULL   	show processlist

Set new Max Connection value

Create a new file called /etc/mysql/conf.d/connections.cnf

Add:

Code Block
[mysqld]
set-variable=max_connections=251

Then restart mysqld

Code Block
service mysqld restart

 

Check how much RAM the MySQL server might consume

Each connection consumes RAM. Don't go crazy on the numbers. This nifty statement will print out the max. ammount of GB RAM the service can use with the current setting.

Code Block
use mysql;
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;

 

In this example the server will not use more than 443 MB:

Code Block
+------------------+
| @show_max_memory |
+------------------+
|           0.4433 |
+------------------+

Set the same parameter on all remaining hosts

Repeat the config file setup and reload on all remaining cluster followers.

If you need to restart all services, use this command:

...

languagebash

...

This page can now be found at Too Many Connections (MySQL) on the Squirro Docs site.