100% ЦП при выполнении 4 или больше параллельных запросов с Magento

Это - чрезвычайно универсальный обзор:

CPIO делает лучшее задание дублирования файловая система, включая взятие резервных копий. Это сохраняет вещи как hardlinks, fifos, и другие not-a-standard-file функции. Большинство реализаций CPIO делает все, что TAR делает, включая чтение и запись .tar файлы. CPIO обычно берет список файлов от стандартного входа для архивации; это делает очень легким передать список по каналу от чего-то еще (как find).

Передача CPIO очень полезна, если у Вас есть очень длинный список файлов, Вы хотите скопировать от каталога A до каталога B. (Например, Вы могли использовать find определять местоположение всех файлов, которые изменились за прошлые 2 года в Вашей системе),

TAR делает лучшее задание простого дампа всех Ваших стандартных файлов к/от ленте (или архивный файл). Немного более просто использовать (для наиболее распространенных задач). Это удовлетворяет простым резервным требованиям большинства людей легко; и большая часть из него - популярность, от этого факта.

И теперь для мелкого шрифта. Существует несколько различных версий и реализаций и CPIO и TAR. У каждого есть различные функции, и у некоторых есть различные параметры командной строки. Существуют вещи, которые каждый может сделать, где другой не может; при нахождении себя ограниченными одним попробуйте другой. У всех есть фаворит, и 99% времени, любой выполнит задачу.

5
задан 20 January 2012 в 13:03
4 ответа

Magento ужасно медлителен, когда вы отключаете кеширование ... тем более на vps, поскольку он должен анализировать тонны файлов XML. То, как он отображает страницу, позволяет очень легко добавлять новые элементы по всей странице, но также требует некоторых массивных запросов sql, а также загрузки файлов xml.

Таким образом, отключение кеширования означает, что magento должен читать эти XML-файлы при каждом поступающем запросе. Таким образом, теперь каждый процесс конкурирует за ЦП и ввод-вывод диска. На диске vps IO - это то место, где ваша бутылочная горловина будет 90% времени. Итак, 4 параллельных процесса запрашивают чтение большого количества XML-файлов, что приводит к длительному ожиданию ЦП процессами apache.

, если вы выполните strace в одном из процессов apache, когда он отображает страницу в magento, вы увидите весь XML, который он должен отобразить.

У меня нет Я прикоснулся к Magento более двух лет, но запускать сайт с трафиком было кошмаром, поэтому моя компания в то время закончила разработку собственного программного обеспечения.

2
ответ дан 3 December 2019 в 01:52

Вы должны выяснить, ждете ли вы Magento, базу данных или любую промежуточную подсистему. Чтобы определить это, запустите strace на вашем веб-сервере / процессах php с флагом -ttt. Каждый системный вызов будет иметь префикс с микросекундной меткой времени, поэтому вы сможете увидеть, как долго ваш PHP-процесс ожидает БД, поиск DNS и, возможно, другие системные вызовы.

0
ответ дан 3 December 2019 в 01:52

Мое первое предложение - запустить сценарий MySQL tuning-primer.sh , чтобы убедиться, что ваша конфигурация MySQL имеет правильную базовую конфигурацию.

Вычисление. Ваша проблема с APC, поэтому вы можете его использовать, также будет хорошей потерей вашего времени. Даже всего лишь 32-мегабайтный SHM для APC приведет к значительному улучшению.

Вы провели базовую оптимизацию Apache и PHP, то есть удалили ненужные / ненужные модули? Вы используете предварительный форк Apache с mod_php или рабочий Apache с php-fpm?

Даже всего лишь 32-мегабайтный SHM для APC приведет к значительному улучшению.

Провели ли вы базовую оптимизацию Apache и PHP, то есть удалили ненужные / ненужные модули? Вы используете предварительный форк Apache с mod_php или рабочий Apache с php-fpm?

Даже всего лишь 32-мегабайтный SHM для APC приведет к значительному улучшению.

Вы провели базовую оптимизацию Apache и PHP, то есть удалили ненужные / ненужные модули? Вы используете предварительный форк Apache с mod_php или рабочий Apache с php-fpm?

0
ответ дан 3 December 2019 в 01:52

Как правило, рекомендуется следовать правилу 2x: 1 ядро ​​= 2 ГБ ОЗУ, 2 ядра = 4 ГБ ОЗУ, 4 ядра = 8 ГБ ОЗУ. Да, вы сказали, что своп не использовался, но, возможно, увеличение ОЗУ - это вариант. Совет: для отслеживания истории загрузки процессора и памяти (не только текущей) я рекомендую использовать расширение Performance Monitoring от PotatoCommerce.

1
ответ дан 3 December 2019 в 01:52

Теги

Похожие вопросы