gpt4 book ai didi

c - 提高并发进程的效率 - 设置 CPU 限制或其他?

转载 作者:太空宇宙 更新时间:2023-11-04 00:07:24 25 4
gpt4 key购买 nike

我正在编写一个基于 PHP 的网站,其中一项任务涉及接受包含用户发送的图像的 zip 文件、解压缩它并为每个解压缩的图像创建缩略图。由于使用 PHP 即时执行此操作真的很痛苦(服务器机器很慢,而且 PHP 本身并不是最快的语言)我想出了一个使用 C 和 ImageMagick 来处理图像的解决方案。 PHP 通过 Unix Sockets 通知 C 程序有新的工作到来。 C 程序本身有 4 个子进程,每个子进程都是一个能够解压缩存档和处理图像的任务处理程序。然而,出现了一个问题:此图像大小调整占用了太多的 CPU,以至于系统几乎死机了。即使程序的一个实例消耗超过 50%,如果有许多并发进程,系统就会变得无响应。仅由一个进程产生的系统负载是可以接受的,尽管此时整个系统变得非常低效,因为一次只能处理一个任务;因此我希望至少有三个并发进程。

现在我想问一个真正的问题:是否有一种(不太复杂的)方法来限制进程的 CPU 使用率,或者我应该尝试其他方法吗?如果我设法设置限制,它不会破坏并发点吗?也许我应该使用更高效的库? (尽管我认为 ImageMagick 不是一个糟糕的选择,对吗?)如果不是这样,您还能建议哪些其他解决方案?

注意:系统是32位的Ubuntu 12.04。

提前致谢。

最佳答案

我认为为缩略图的创建创建新进程是不明智的。我想一般来说使用 PHP 的 ImageMagick 函数会更便宜,而且不会明显变慢。你测试过吗?您是否使用 convert 命令的 -thumbnail 运算符?

关于c - 提高并发进程的效率 - 设置 CPU 限制或其他?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17786742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com