mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-22 14:52:41 +01:00
Add a setup warning about innodb_buffer_pool_size
Summary: Fixes T6119. This is a little fuzzy, but generally bumping up `innodb_buffer_pool_size` to something bigger than the default (which is often anemic, at `8M`) is desriable, and it seems like it will fix the specific issue a user encountered in T6119. Test Plan: {F211855} Reviewers: btrahan Reviewed By: btrahan Subscribers: epriestley Maniphest Tasks: T6119 Differential Revision: https://secure.phabricator.com/D10630
This commit is contained in:
parent
b16527d93d
commit
0ddb187508
1 changed files with 49 additions and 0 deletions
|
@ -186,6 +186,55 @@ final class PhabricatorSetupCheckMySQL extends PhabricatorSetupCheck {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$innodb_pool = self::loadRawConfigValue('innodb_buffer_pool_size');
|
||||||
|
$innodb_bytes = phutil_parse_bytes($innodb_pool);
|
||||||
|
$innodb_readable = phutil_format_bytes($innodb_bytes);
|
||||||
|
|
||||||
|
// This is arbitrary and just trying to detect values that the user
|
||||||
|
// probably didn't set themselves. The Mac OS X default is 128MB and
|
||||||
|
// 40% of an AWS EC2 Micro instance is 245MB, so keeping it somewhere
|
||||||
|
// between those two values seems like a reasonable approximation.
|
||||||
|
$minimum_readable = '225MB';
|
||||||
|
|
||||||
|
$minimum_bytes = phutil_parse_bytes($minimum_readable);
|
||||||
|
if ($innodb_bytes < $minimum_bytes) {
|
||||||
|
$summary = pht(
|
||||||
|
'MySQL is configured with a very small innodb_buffer_pool_size, '.
|
||||||
|
'which may impact performance.');
|
||||||
|
|
||||||
|
$message = pht(
|
||||||
|
"Your MySQL instance is configured with a very small %s (%s). ".
|
||||||
|
"This may cause poor database performance and lock exhaustion.\n\n".
|
||||||
|
"There are no hard-and-fast rules to setting an appropriate value, ".
|
||||||
|
"but a reasonable starting point for a standard install is something ".
|
||||||
|
"like 40%% of the total memory on the machine. For example, if you ".
|
||||||
|
"have 4GB of RAM on the machine you have installed Phabricator on, ".
|
||||||
|
"you might set this value to %s.\n\n".
|
||||||
|
"You can read more about this option in the MySQL documentation to ".
|
||||||
|
"help you make a decision about how to configure it for your use ".
|
||||||
|
"case. There are no concerns specific to Phabricator which make it ".
|
||||||
|
"different from normal workloads with respect to this setting.\n\n".
|
||||||
|
"To adjust the setting, add something like this to your %s file (in ".
|
||||||
|
"the %s section), replacing %s with an appropriate value for your ".
|
||||||
|
"host and use case. Then restart %s:\n\n".
|
||||||
|
"%s\n".
|
||||||
|
"If you're satisfied with the current setting, you can safely ".
|
||||||
|
"ignore this setup warning.",
|
||||||
|
phutil_tag('tt', array(), 'innodb_buffer_pool_size'),
|
||||||
|
phutil_tag('tt', array(), $innodb_readable),
|
||||||
|
phutil_tag('tt', array(), '1600M'),
|
||||||
|
phutil_tag('tt', array(), 'my.cnf'),
|
||||||
|
phutil_tag('tt', array(), '[mysqld]'),
|
||||||
|
phutil_tag('tt', array(), '1600M'),
|
||||||
|
phutil_tag('tt', array(), 'mysqld'),
|
||||||
|
phutil_tag('pre', array(), 'innodb_buffer_pool_size=1600M'));
|
||||||
|
|
||||||
|
$this->newIssue('mysql.innodb_buffer_pool_size')
|
||||||
|
->setName(pht('MySQL May Run Slowly'))
|
||||||
|
->setSummary($summary)
|
||||||
|
->setMessage($message)
|
||||||
|
->addMySQLConfig('innodb_buffer_pool_size');
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue