我目前正在尝试使用 apache 和 php 处理大量数据,
我估计这将花费几个小时,我想减少这段时间
在我的 webmin 中我看到以下信息
CPU usage 25% user, 0% kernel, 19% IO, 55% idle
有没有办法可以暂时为该进程分配更多的 CPU 使用率?(即使这意味着更改配置并重新启动 apache 两次)
它基本上是很多 mysql 选择/插入/更新和正则表达式
处理器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
答案1
假设您有一个四核 CPU,并且只使用了其中的四分之一,我倾向于说您在一个单线程作业中运行所有数据处理。这将仅使用一个 CPU 核心。重写您的代码以并行执行多个任务(通过线程或多个独立进程),它将正确使用您的所有 CPU 核心。这不是一个简单的操作。
请注意,有关并行化代码的问题应直接发送至 Stack Overflow。
答案2
从 5.0 版开始,MySQL 已经是多线程的,并且针对在多核系统上运行进行了优化。您的磁盘子系统运行良好吗?也许磁盘就是瓶颈。
否则,您必须重新编写 PHP 脚本,以便如上所述作为多个并行进程运行。PHP 不完全支持一个实例内的线程,或者很难使用它。
@edit: 或者如果可能的话,您可以将数据分成几个块,然后通过运行多个不同的 PHP 脚本来处理它。