Самый эффективный способ настройки MySQL на Ubuntu Server 10 LTS?

Самый эффективный способ настройки MySQL на Ubuntu Server 10 LTS?

Первоначально этот вопрос был на stackoverflow.com, но мне сказали, что я могу получить лучший ответ на этом сайте...

Очень скоро я буду настраивать веб-сервер для клиента, у которого очень загруженный сайт. У него есть форум (работает наФорум Simple MachinesSMF, написанный на PHP), который на самом деле не может быть изменен. Я хочу переместить его на отдельный виртуальный частный сервер, так как он очень загружен, около 40 000 посещений в день с 400+ сообщениями в день. С версией SMF, которая у него есть (лучшая, самая стабильная продакшн-версия 1.1), ему для работы требуется MySQL, поэтому я не могу изменить его на PostgreSQL (который я, возможно, предпочел бы)

При установке MySQL Server на Ubuntu Server 10 LTS мне интересно узнать, могу ли я что-то сделать, чтобы обеспечить максимальную эффективность. Я хочу работать как можно быстрее, чтобы экономить ресурсы и не выходить за рамки нашего лимита ресурсов для сервера. С виртуальным частным сервером у меня есть возможность мгновенно переключать ресурсы, но я хочу убедиться, что MySQL Server настроен максимально эффективно, поскольку я не совсем эксперт в таких вещах.

Я проводил небольшое исследование и нашел статью, в которой предлагается сделать следующее, чтобы обеспечить эффективность:

# open mysql conf and set these settings:
#    key_buffer = 16k
#    max_allowed_packet = 1M
#    thread_stack = 64K
nano /etc/mysql/my.cnf
# restart mysql
/etc/init.d/mysql restart

Может ли кто-нибудь дать мне какие-нибудь советы, подсказки, ссылки, знания по этой теме?

решение1

Прежде всего; Янне прав: 40 тыс. чтений и 400 записей в день — это нулевая нагрузка. У вас не должно быть абсолютно никаких недостатков производительности при практически любой настройке.

Я использую похожую настройку на VPS с SMF. Я обнаружил, что она очень выигрывает от механизмов кэширования, поскольку использует APC.

Моя установка (которую я вам рекомендую):

  • Nginx
  • MySQL (с преобразованием большинства таблиц SMF в InnoDB)
  • PHP-FPM (чрезвычайно масштабируемый, может использовать очень мало ресурсов, если вы укажете ему начать с небольшого количества спаунов)
  • кэш APC

решение2

Во-первых, 40 000 посещений в день и 400+ сообщений в день — это не похоже на то, что могло бы заставить MySQL понервничать. 40 000 посещений в день — это примерно 2 посещения в секунду, если распределить их в течение дня, а 400+ сообщений означают, что каждые три минуты появляется новый пост.

И это не так уж много. На самом деле.

Вы не упомянули, какой механизм хранения используется. С таблицами MyISAM вам нужно настроить, особенноkey_bufferиtable_cacheзначения. С таблицами InnoDBразмер_буфера_пула_innodbявляется самым важным.

Thekey_buffer = 16kв вашем примере звучит странно. 16 килобайт key_buffer? Ни в коем случае, сделайте его не менее 16M (мегабайт), или если на вашем сервере приличный объем памяти, то он может быть намного больше. Однако, пожалуйста, учтите, что многие переменные MySQLсвязьконкретные, а не глобальные значения, поэтому, если нагрузка на ваш сервер означает тысячи одновременных подключений MySQL, то вам нужно будет уменьшить значения, но если у вас обычно всего несколько подключений, но большие наборы данных, то вам нужно будет увеличить значения.

Связанный контент