Назад | Перейти на главную страницу

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

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

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

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

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

# 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

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

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

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

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

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

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

И это немного. В самом деле.

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

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