Как профилировать дисковый ввод-вывод в сценарии PHP? - PullRequest
2 голосов
/ 08 ноября 2011

Я запускаю 5 экземпляров скрипта PHP, используя Supervisord . Выполнение 5 процессов - это оптимальное число для максимальной обработки, которую выполняет мой PHP-скрипт. Если я бегу больше 5 или меньше 5, я получаю худшие результаты.

Я уже профилирую сам скрипт PHP с помощью xdebug и webgrind .

Я подозреваю, что дисковый ввод-вывод мешает мне запускать больше параллельных процессов, поскольку мой ЦП и память не исчерпаны при 5 запущенных процессах. У меня есть 4 виртуальных ядра на экземпляре Amazon EC2, и ни Mysqld, ни Supervisord не используют более 50% ЦП в любой момент времени.

Как один профильный дисковый ввод-вывод на компьютере с ОС Linux Cent (это звучит как преступник)?

Какие еще узкие места я должен искать?

- SOLUTION -

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

1 Ответ

1 голос
/ 08 ноября 2011

Я бы посмотрел на iostat -c -n 1 во время работы вашего скрипта и увидел, что сообщается в столбце% util в крайнем правом углу.Если ваша догадка верна, то% util должен быть близок к 100% во время работы ваших процессов.

Этот сценарий выполняет какую-либо обработку, которая выбирает данные по сети?Это также может быть узким местом.

Трудно сказать больше, не зная немного больше о том, что делает сценарий.Что делает каждый процесс?Как вы определили, что 5 - оптимальное количество процессов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...