Jump to content

  • You cannot start a new topic
  • You cannot reply to this topic

Apache съедает 100% CPU на сервере Rate Topic   - - - - -

 
  • vkapas
  • Advanced Member
  • Members
  • Join Date: 13-Aug 12
  • 83 posts

Posted 12 March 2013 - 08:00 PM #1

Всем привет.

Есть интернет-магазин на 3.0.3, который крутится на VPS. На сервере развёрнут 1 «боевой» и 1 тестовый сайт (например, для обкатки обновлений).

Примерно с полгода назад начались проблемы с производительностью: CMS-ка могла внезапно (когда на сайте, например, 1 посетитель) загрузить наш сервер на 100% CPU и также внезапно эта нагрузка могла пропасть. Происходило это примерно раз в месяц и, если проблема не проходила сама собой, то обычно она решалась просто, но не слишком элегантно — перезагрузкой сервера.

В последние несколько недель проблема с нагрузкой сервера стала появляться намного чаще и ребутом сервера уже не решалась. На сервере проблема выглядит так: под сотню процессов apache2, которые в сумме съедают весь CPU, что иногда, помимо прочего, при длительной нагрузке стало вызывать ещё и Kernel Panic.

Почему тема называется «Apache съедает 100% CPU на сервере»: однажды, во время одной из таких необъяснимых нагрузок сервера, я случайно положил боевой сайт, оставив при этом в работе тестовый (накосячил с разметкой .htaccess), и CPU сразу же опустился до 1%! То есть проблема, скорее всего, не в apache, который я уже устал тюнить без какого-либо результата, а, видимо, где-то в конфиге «боевого» сайта.

Вот только где?


P.S. Становится всё хуже :-(. Пока писал пост, CS-Cart на рабочем сайте стал выдавать Error_occurred.

 
  • Alex_VP
  • Senior Member
  • Members
  • Join Date: 04-Jun 10
  • 1452 posts

Posted 13 March 2013 - 06:49 AM #2

какой apache? php? nginx? недавно обновил php до последней версии - сервер лег, да так, что пришлось полностью восстанавливать из резервной копии системную часть.

 
  • vkapas
  • Advanced Member
  • Members
  • Join Date: 13-Aug 12
  • 83 posts

Posted 13 March 2013 - 07:33 AM #3

# apachectl -v
Server version: Apache/2.2.16 (Debian)
Server built:   Mar  3 2013 11:36:04


# php -v
PHP Warning:  Module 'curl' already loaded in Unknown on line 0
PHP 5.3.22-1~dotdeb.0 with Suhosin-Patch (cli) (built: Mar  3 2013 00:04:34)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies


nginx не используем, пока не до этого. У сайта не более 3-5 посетителей онлайн.
Suhosin отключен, т.к. из-за него у нас не работает выгрузка на сайт через стороннюю программу.

 
  • Alex_VP
  • Senior Member
  • Members
  • Join Date: 04-Jun 10
  • 1452 posts

Posted 13 March 2013 - 07:52 AM #4

У меня php 5.3.21, проблемы начались как раз при обновлении с неё до 22. Apache 2.2.23, но на FreeBSD. Про определенные проблемы с линуксом слышал, но сам не встречался, так как никогда не использовал линукс под сервер. Хотя нет, сторонняя компания ставила нам офисный сервер под 1С на федоре, и там в отличии от freeBSD постоянно шла утечка памяти (это скорее проблема 1с сервера для линукс), и постоянно подвисали процессы, да постоянно уходила в призрачное состояние постгре (база данных работает при отсутствии какого-либо процесса...)

 
  • vkapas
  • Advanced Member
  • Members
  • Join Date: 13-Aug 12
  • 83 posts

Posted 14 March 2013 - 08:41 AM #5

Да, утечки памяти, действительно, наблюдаются, но не так, чтобы стать серьёзной проблемой.

Кстати, забыл написать про железо сервера: ТП «S3» на Majordomo — CPU 2200 МГц, RAM 2048 Мб. Это ведь не может стать причиной тормозов на сайте с тремя посетителями онлайн?

 
  • vkapas
  • Advanced Member
  • Members
  • Join Date: 13-Aug 12
  • 83 posts

Posted 21 March 2013 - 08:11 PM #6

Совместно с ТП CS-Cart проблему решили. Возможно, решение кому-то пригодится.

В общем, проблема заключалась в отсутствии локации (шаблона) 404. Что интересно, без этой локации сама 404 страница отдавалась CMS-кой без каких-либо проблем. Короче говоря, если у вас наблюдаются проблемы с нагрузкой на сервере, откройте страницу ?dispatch=block_manager.manage (Дизайн > Блоки) и проверьте, создана ли у вас локация 404. Если нет, то:
1) нажмите Добавить локацию;
2) укажите Диспетчер: Заданный период, в поле напротив — no_page, Название: 404, Название страницы: Страница не найдена;
3) нажмите Сохранить;
4) в созданной локации добавьте секцию (кнопка «+» рядом с кнопкой в виде гайки) на всю ширину контейнера => нажмите Сохранить;
5) в созданной секции добавьте блок (тоже кнопка «+» но уже в области секции), на странице создания блока перейдите на вкладку Создать новый блок и выберите Шаблон;
6) на странице редактирования блока укажите название 404 и Шаблон — 404 страница не найдена => нажмите Создать.


На всякий случай почистите кэш (?cc).

Уж не знаю, почему за 2 с лишним года работы это ни разу не проявилось (по крайней мере, так сильно). ТП говорит, как я понял, что это проблема есть и в стандартной установке CS-Cart, но сейчас она вроде бы исправлена.