В настоящее время я пытаюсь обработать кучу данных с помощью apache и php,
Я предполагаю, что это займет несколько часов, и я бы хотел сократить это время
В моем webmin я вижу следующую информацию
CPU usage 25% user, 0% kernel, 19% IO, 55% idle
Есть ли способ временно выделить больше ресурсов процессора для процесса? (даже если это означает изменение конфигураций и двойной перезапуск apache)
это в основном много mysql выбирает / вставляет / обновляет и регулярное выражение
Процессор есть Intel(R) Core(TM)2 Quad CPU Q9400 @ 2.66GHz, 4 cores
Спасибо за любые советы о том, как улучшить скорость
редактировать Список использования ЦП показывает это
ID Owner CPU Command
26841 mysql 38.6 % /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file ...
5627 www-data 0.3 % /usr/sbin/apache2 -k start
MySQL версии 5.0 уже является многопоточным и оптимизирован для работы в многоядерных системах. Ваша дисковая подсистема работает нормально? Возможно, диск представляет собой узкое место.
В противном случае вам придется перекодировать свои сценарии PHP, чтобы они работали как несколько параллельных процессов, как указано выше. PHP не полностью поддерживает потоки в одном экземпляре, или его сложно использовать.
@edit: Или вы можете разделить данные на несколько блоков, если это возможно, и обработать их, запустив несколько разных сценариев PHP.
Учитывая, что у вас четырехъядерный ЦП и вы используете ровно четверть его, я был бы склонен сказать, что вы выполняете всю обработку данных в одном однопоточном задании. Это будет использовать только одно ядро процессора. Перепишите свой код для параллельного выполнения нескольких задач (либо через потоки, либо через несколько независимых процессов), и он будет правильно использовать все ядра вашего процессора. Это нетривиальная операция.
Обратите внимание, что вопросы относительно распараллеливания вашего кода следует направлять в Stack Overflow.