我目前正在尝试用apache和php处理一堆数据,
我估计这将需要几个小时,我想减less这个时间
在我的webmin我看到以下信息
CPU usage 25% user, 0% kernel, 19% IO, 55% idle
有没有办法让更多的cpu使用暂时的过程? (即使这意味着更改configuration并重新启动Apache两次)
它基本上是很多的MySQLselect/插入/更新和正则expression式
处理器为Intel(R) Core(TM)2 Quad CPU Q9400 @ 2.66GHz, 4 cores
感谢有关如何提高速度的任何提示
编辑 CPU使用情况列表显示了这一点
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
考虑到你有一个四核CPU,并且你正在使用它的四分之一,我倾向于说你正在一个单线程工作中运行所有的数据处理。 这将只使用一个CPU内核。 重写代码以并行执行多个任务(通过线程或多个独立进程),它将正确使用所有CPU内核。 这不是一个微不足道的操作。
请注意,有关并行化代码的问题应该引向Stack Overflow。
来自版本5.0的MySQL已经是multithreading的,并且已经被优化用于在多核系统上运行。 你的磁盘子系统运行良好吗? 也许磁盘代表了瓶颈。
否则,您必须重新编写您的PHP脚本才能像上面所述的那样以多个并行进程运行。 PHP在一个实例中不完全支持线程,或者很难使用它。
@edit:或者,如果可能的话,可以将数据分成若干块,并通过运行多个不同的PHP脚本来处理。