Apache падает каждые 5 минут

Я относительно новичок в вопросах сервера, и мой сайт, который я начал в начале года, выходит за рамки моих возможностей по управлению им. Мне нужна помощь.

Недавно я перешел из среды общего хостинга на выделенный виртуальный сервер от Mediatemple.

Каждую неделю я запускаю сценарий, который извлекает данные из моей БД, извлекает данные из API last.fm и затем отправляет информацию в Twitter.

Мой сервер использует Virtuozzo, и когда скрипт запускается, Apache падает каждые 5 минут. Я проверил и увидел, что параметр 'kmemsize' достигает своего предела (его 13mb).

Я осознаю свою проблему. Процесс MySQL остается открытым долгое время, в то время как Apache должен обрабатывать множество входящих ссылок (около 200 000 просмотров страниц за этот день согласно AWSTATS моего предыдущего хоста). Да, я совершенно неопытен в этом, и я явно убиваю сервер слишком большим количеством входящих ссылок, пока он должен управлять обновлением БД.

Так что это прецедент: я хочу несколько ответов.

1) Почему моя среда общего хостинга не терпела крах apache каждые 5 минут? Он работал нормально, сайт только сильно замедлился. Понятно, что это должен быть виртуальный контейнер и предел kmemsize?

2) Куда мне идти отсюда? Будет ли физический сервер (не виртуальный контейнер) сталкиваться с такими же проблемами?


Я также отправил запрос в службу поддержки в Mediatemple. Мне нужна вся помощь, которую я могу получить.

4 ответа

Это может быть так же просто, как настройка MySQL.

Ваш старый хост / сервер мог иметь уникальный файл /etc/my.cnf против простого ванили.

Начните с базового мониторинга MySQL - вот несколько инструментов, которые могут вам помочь:

top, mtop и innotop

(top по умолчанию в Linux) mtop - http://mtop.sourceforge.net/ innotop - http://innotop.sourceforge.net/

Вы также можете прибегнуть к инструменту мониторинга MySQL из командной строки (cli)

mysqladmin processlist / mysqladmin proc

К сожалению, многие люди будут использовать шаблоны по умолчанию, доступные в / usr / share / mysql

Я НАСТОЯТЕЛЬНО РЕКОМЕНДУЮ ПРОПУСТИТЬ ИХ - они старые и их не стоит использовать по следующим причинам:

Неверные настройки для некоторых версий ОС или MySQL (например, thread_concurrency и skip-lock). Добавление огромных переменных массива, из-за которых вы, возможно, не понимаете, что они собой представляют. Производительность при тестировании их с другими настройками не просто сомнительна. дайте MySQL работать не менее 24-48 часов, а затем используйте следующие диагностические инструменты:

MySQL-тюнер (просто наберите wget mysqltuner.pl в linux, чтобы загрузить, затем chmod755 mysqltuner.pl и запустите его, выполнив./mysqltuner.pl;-) mysqlidxchk (установите wget hackmysql.com/scripts/mysqlidxchk-1.1 chmod 755 mysqlidxchk * mysqlidxchk) затем запустите, выполнив что-то вроде этого: (./mysqlidxchk --general / var / lib / mysql / general.log) Если вам нужна помощь в их установке, сообщите мне

PS - большинство из них - сценарии только для Linux - но они очень помогут в настройке и управлении вашим сервером MySQL.

А также хороший инструмент разбора логов, такой как mysqlsla и mysqlreport для отчетов о состоянии

Вы используете панель управления случайно?

vzctl set 101 --kmemsize 2211840:2359296 - сохранить

Попробуйте, это увеличит kmemsize

То, как работает технология VZ, накладывает ограничения на различные ресурсы. Если ваш beancounter показывает, что вы превышаете пределы памяти, у вас есть несколько вариантов.

  1. Обновите свой хостинг-пакет, чтобы он имел больше ресурсов.
  2. Замените apache на облегченный веб-сервер, такой как lighttpd или nginx.
  3. Сконфигурируйте mysql для использования меньшего количества ресурсов, обратившись к файлу my-small.cnf, который поставляется вместе с ним.
  4. Сконфигурируйте ваше приложение, чтобы использовать меньше памяти (например, memory_limit в PHP).

Существуют различные учебные пособия, которые показывают, как вы можете настроить облегченный LAMP-подобный стек для различных вариантов VPS.

Я знаю, что это довольно старый вопрос, но следующие мысли будут полезны:

Если это вопрос настройки сервера MySQL, я использую http://tools.percona.com/ Это бесплатный сервис, просто зарегистрируйтесь, войдите в систему, введите данные сервера, и он предоставит вам настройки, которые необходимо включить в файл my.ini.

Я видел улучшения производительности, например, импорт, который занимал 20 минут, мог выполняться через 7 секунд после настройки.

Другие вопросы по тегам