mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-10 08:52:39 +01:00
Add a setup issue about small "max_connections" settings
Summary: Fixes T11683. Likely as a result of the persitent connections change, more users are seeing MySQL connection limit errors. The persistent connections change means we use //fewer// connections at the high end, but I'm guessing PHP is keeping some more connections around in the pool, so while high-traffic hosts use fewer connections, low-traffic hosts now use more. Raise an explicit setup warning about this. Users should be adjusting it anyway, there's no value to leaving it at extremely low default and connections are baiscally free until you run out of outbound ports. Test Plan: {F1844630} Reviewers: chad Reviewed By: chad Maniphest Tasks: T11683 Differential Revision: https://secure.phabricator.com/D16586
This commit is contained in:
parent
66c7f22c27
commit
396be07c15
1 changed files with 34 additions and 0 deletions
|
@ -44,6 +44,40 @@ final class PhabricatorMySQLSetupCheck extends PhabricatorSetupCheck {
|
|||
->addMySQLConfig('max_allowed_packet');
|
||||
}
|
||||
|
||||
$max_connections = self::loadRawConfigValue('max_connections');
|
||||
|
||||
// A common default is 150, but we're fairly liberal about the number of
|
||||
// connections we open and it's easy for us to run far over this limit.
|
||||
|
||||
$warning_threshold = 256;
|
||||
if ($max_connections < $warning_threshold) {
|
||||
$message = pht(
|
||||
'MySQL is configured with a small "%s" (%d) limit, which may cause '.
|
||||
'connection failures long before any resources near exhaustion. '.
|
||||
'There is normally very little benefit to enforcing a connection '.
|
||||
'limit, and most installs should increase it substantially.'.
|
||||
"\n\n".
|
||||
'You can compute a specific connection limit for your install by '.
|
||||
'doing a lot of math with MySQL buffer sizes and RAM available on '.
|
||||
'the machine, or just set it to a huge number. In nearly every case, '.
|
||||
'setting it to a huge number is entirely reasonable.'.
|
||||
"\n\n".
|
||||
'You can raise this limit by adding this to your %s file (in the %s '.
|
||||
'section) and then restarting %s:'.
|
||||
"\n\n%s",
|
||||
'max_connections',
|
||||
$max_connections,
|
||||
phutil_tag('tt', array(), 'my.cnf'),
|
||||
phutil_tag('tt', array(), '[mysqld]'),
|
||||
phutil_tag('tt', array(), 'mysqld'),
|
||||
phutil_tag('pre', array(), 'max_connections=100000'));
|
||||
|
||||
$this->newIssue('mysql.max_connections')
|
||||
->setName(pht('Small MySQL "%s"', 'max_connections'))
|
||||
->setMessage($message)
|
||||
->addMySQLConfig('max_connections');
|
||||
}
|
||||
|
||||
$modes = self::loadRawConfigValue('sql_mode');
|
||||
$modes = explode(',', $modes);
|
||||
|
||||
|
|
Loading…
Reference in a new issue