Apache/PHP在VMWare上仅使用Windows中50%的CPU

Apache/PHP在VMWare上仅使用Windows中50%的CPU,php,windows,apache,vmware,Php,Windows,Apache,Vmware,在使用2个CPU的Windows Server 2012中,我使用了带有PHP5.6的Apache 2.4,当我使用DOMPDF生成PDF文档时,累计使用了总CPU功率的50%。无论我做什么,我都不能得到超过50%的总数。我试着打开一堆窗口,同时创建多个系列的PDF文档 每个单独的CPU将少于50%,如果一个CPU峰值上升,另一个CPU峰值下降。windows似乎限制Apache服务使用50%的CPU。有什么地方可以改变这个吗 编辑:我的应用程序已经在使用这两个CPU,只是没有达到其全部容量,在

在使用2个CPU的Windows Server 2012中,我使用了带有PHP5.6的Apache 2.4,当我使用DOMPDF生成PDF文档时,累计使用了总CPU功率的50%。无论我做什么,我都不能得到超过50%的总数。我试着打开一堆窗口,同时创建多个系列的PDF文档

每个单独的CPU将少于50%,如果一个CPU峰值上升,另一个CPU峰值下降。windows似乎限制Apache服务使用50%的CPU。有什么地方可以改变这个吗


编辑:我的应用程序已经在使用这两个CPU,只是没有达到其全部容量,在60秒的负载后,利用率将移动到100%。我认为这与线程无关。。。可能是环境设置?

这不是windows限制,而是程序设计本身。我认为它与CPU核心有关(例如,它有4个核心,仅使用2个,确切地说是50%)。
据我所知,您对此无能为力,因为如果没有正确的程序设计,无法将其拆分为更多的内核。

它有两个内核,并且同时使用这两个内核,但它没有最大化它们。这并不意味着系统不忙。如果你正在构建大量的PDF,那么很可能其中的一些进程正在等待其他东西,比如磁盘带宽。因此,如果cpu有两个内核,并且使用率为50%,那么很可能只使用一个。据我所知,Apache具有良好的多线程特性,因此它应该使用所有内核。问题可能是一个不是线程安全的模块,我记得PHP就是这样一个模块,这可能就是问题所在。PHP只在一个内核中运行#Edit刚刚发现:我正在观察单个内核,我可以看到它们的利用率都在20-80%之间。这些是光纤通道上的虚拟机,所以可能不是磁盘或网络速度。我正在使用threadsafe php模块。您可以设置一个RAM磁盘,看看是否可以让DOMPDF或php将其用作暂存空间。正如Mark所说,这个过程可能是磁盘绑定的,如果是这样,您需要加快磁盘速度以获得更多的CPU使用率。还有,你想解决什么问题?您希望更快地生成PDF,还是减轻web服务器上的负载?它已经在使用ramdisk,因此我认为这不是磁盘访问问题。是的,我试图解决的问题是提高PDF生成速度。我还做了其他的负载测试,比如循环来产生负载,但是有一些东西将负载降低到50%。我只是想知道这是否是Windows中的某个设置,但如果还没有人提到这样的设置,也许不是。我不知道PDF生成的详细信息,但可能是一个公平的猜测,您的程序不受CPU定义的限制,因为您的速度仅上升了50%。其他东西在阻碍它——磁盘或网络。“思考”是不是磁盘不是一种理想的方法-使用xdebug或其他方法检查它在做什么。“是的,我试图解决的问题是提高PDF生成速度”-也许你只需要让PDF创建成为一个脱机过程?将其从web进程中删除,并将其添加到工作队列中。这样做的优点是,web服务器进程在生成期间不会被锁定。只需向队列发送消息以处理PDF,然后告诉用户在下一个网页中等待。您可以使用AJAX或WebSockets定期重试服务器以查看PDF是否准备就绪,并在准备就绪时刷新屏幕以包含链接。对不起,我很笨:(感谢您编辑我的问题)。