2013-02-16 2 views
5

У меня есть многопроцессорное приложение PHP (CLI), которое работает непрерывно. Первоначально я использовал стандартную сборку Ubuntu 10.04 для сборки PHP (5.3.2-1ubuntu4.18). Тем не менее, я пытаюсь оптимизировать использование памяти, потому что объем памяти, используемой каждым процессом, ограничивает количество вилок, которые я могу запускать в любой момент времени (так как у меня имеется ограниченный объем памяти). Следуя рекомендациям preinheimer, я повторно скомпилировал PHP, отключив все расширения, а затем повторно включив только те, которые необходимы для моего приложения (mysql, curl, pcntl, posix и json). Моя команда конфигурирования является:Почему перекомпилирован PHP с использованием огромного количества процессоров по сравнению с сборкой Ubuntu по умолчанию?

'./configure' '--prefix=/usr/local/phpbare' '--with-config-file-path=/etc \ 
/php5/clibare' '--disable-all' '--with-mysql=mysqlnd' '--with-curl' \ 
'--enable-pcntl' '--enable-posix' '--enable-json' 

Этой новый «голые кости» сборка позволила моему приложению для запуска, но, к моему удивлению, когда я смотрю на запущенный процесс, используя top, он использует примерно столько же память, как и прежде (еще более проблематично), используется огромные суммы процессорного времени (часто 15-20% от ЦП, когда до того, как сумма, указанная сверху, обычно 0-1%). Возможно ли, что мне не хватает какого-либо расширения php, которое каким-то образом оптимизирует скрипт для использования меньших вычислительных ресурсов ??? Или сборка Ubuntu, возможно, оптимизирована для архитектуры Ubuntu, тогда как в моей пользовательской сборке отсутствуют эти оптимизации? Если да, то как я могу выяснить, какие оптимизации используются в сборке Ubuntu, чтобы воссоздать их в моей сборке «голые кости»?

Вот фрагмент выхода из ps aux | grep php, который используется, чтобы продемонстрировать свою точку в комментариях ниже:

root 12952 0.3 0.9 33176 4968 pts/2 S Feb14 11:15 s.php 5 
root 12955 0.3 0.9 32664 4732 pts/2 S Feb14 11:12 s.php 5 
root 12958 0.3 0.9 32664 4796 pts/2 S Feb14 10:51 s.php 5 
root 12961 0.3 0.9 32740 4752 pts/2 S Feb14 11:07 s.php 5 
root 14162 0.3 0.9 33000 4904 pts/2 S Feb14 10:51 s.php 5 
root 14165 0.3 1.0 33256 5340 pts/2 S Feb14 10:56 s.php 5 
root 23426 9.5 1.1 13492 6040 pts/2 S Feb15 151:38 s.php 1 
+1

Вы используете тот же .ini файл, что и на складе ubuntu версии? –

+0

Да. Я просто скопировал его без изменений в каталог, указанный в файле -with-config-file-path, и подтвердил, что этот файл использовался с php -i => Загруженным конфигурационным файлом => /etc/php5/clibare/php.ini – robguinness

+0

, что вы действительно должны измерять скорость, с которой работает скрипт, а не использование ЦП. Фактически, 100% вашего процессора нужно использовать, если скрипт запущен. – Evert

ответ

-1

Опкод кэш делает PHP в несколько раз быстрее. Убедитесь, что у вас есть расширение, такое как APC.

Вы также можете проверить phpinfo() стандартного пакета, чтобы узнать, какие параметры он использовал и перекомпилировать с теми же параметрами, чтобы проверить, не зависит ли это от конфигурации или что-то еще, например, от разных компиляторов или библиотек.

+0

К сожалению, в стандартном пакете Ubuntu команда Configure Command из phpinfo() отключена. Но в остальном, по-прежнему можно получить информацию о конфигурации от phpinfo(), а не точную команду configure. – robguinness