#php #linux #profiling
#php #linux #профилирование
Вопрос:
Я запускаю 5 экземпляров PHP-скрипта, используя Supervisor. Выполнение 5 процессов — оптимальное количество для максимальной обработки, которую выполняет мой PHP-скрипт. Если я запускаю более 5 или менее 5, я получаю худшие результаты.
Я уже профилирую сам PHP-скрипт с помощью xdebug и webgrind.
Я подозреваю, что дисковый ввод-вывод — это то, что мешает мне запускать больше параллельных процессов, поскольку мой процессор и память не загружены при 5 запущенных процессах. У меня есть 4 виртуальных ядра в экземпляре Amazon EC2, и ни Mysqld, ни Supervisord не используют более 50% процессора в любой момент времени.
Как один профиль дискового ввода-вывода на компьютере с ОС Linux Cent (похоже ли это на виновника)?
Какие еще узкие места мне следует искать?
—РЕШЕНИЕ—
Я не смог найти никаких простых решений, которые дали бы мне очень подробную информацию. Я не совсем уверен, что ищу, поэтому прошу прощения за то, что этот вопрос и ответ были расплывчатыми.
Комментарии:
1. Можно ли использовать обычный старый
iotop
вариант? Это дает вам оперативное представление о том, какие процессы обращаются к диску.2. Я установил это и опробовал. Данные выглядят хорошо, но мне неясно, что делать с информацией? Как я узнаю, каковы ограничения моей системы?
Ответ №1:
Я бы посмотрел iostat -c -n 1
во время выполнения вашего скрипта и посмотрел, что сообщается в столбце% util в крайнем правом углу. Если ваша догадка верна, то % util должен быть близок к 100% во время выполнения ваших процессов.
Выполняет ли этот скрипт какую-либо обработку, которая извлекает данные по сети? Это также может быть узким местом.
Трудно сказать больше, не зная немного больше о том, что делает скрипт. Что делает каждый процесс? Как вы определили, что 5 — это оптимальное количество процессов?
Комментарии:
1. Это система обхода / очистки. Каждый скрипт выбирает следующий файл из таблицы files и загружает его, если он еще не загружен. Затем очищает его и сохраняет различные фрагменты информации, такие как ссылки и мета-информация. Я определил, что 5 является оптимальным числом процессов, попробовав разное количество процессов и отслеживая, сколько файлов обрабатывается в секунду. Максимальная скорость составляла около 2,8 файла в секунду при запущенных 5 процессах. Я пробовал iostat, и мой% использования никогда не превышает 10%. Я продолжу копать, я думаю. Кроме того, мне пришлось использовать iostat -x 1.
2.
yum install sysstat