Home > Backend Development > PHP Tutorial > apache - 在嵌入式设备中使用php,php-fpm占用很高的CPU

apache - 在嵌入式设备中使用php,php-fpm占用很高的CPU

WBOY
Release: 2016-06-06 20:44:27
Original
1073 people have browsed it

目前手头上现在有个项目,是在一个装有linux系统的嵌入式设备里面跑一个网站。

设备的CPU是RAM结构,单核,1GB。

我们在系统里面架设了Apache+Mysql+php,然后写个网站,放在里面运行。感觉有点类似于路由器里面那个web页面的设置程序,但是我们那是个完整的网站应用。

php在设备上运行的很慢,但是通过合并php文件(减小IO),使用apc(缓存opcode和一些数据和页面),访问速度有所提升。

但是,每次访问设备里面的网站时,php-fpm的cpu能瞬间占用到40%左右,不访问页面后cpu占用会降下来。因为设备中还运行了一下其他服务和程序,当php-fpm占用过多cpu后,会引起其他程序出现问题。

为什么php-fpm会占用那么多cpu?apache也没有占多少,有没有办法让cpu降下来。

本来有想过用一些嵌入式的web服务器,但是感觉cpu占用不是apache的问题,是php的问题,不知道如何处理。友友们又没有什么建议和想法?

PS:设备中的网站只有一个用户访问也会这样。

回复内容:

目前手头上现在有个项目,是在一个装有linux系统的嵌入式设备里面跑一个网站。

设备的CPU是RAM结构,单核,1GB。

我们在系统里面架设了Apache+Mysql+php,然后写个网站,放在里面运行。感觉有点类似于路由器里面那个web页面的设置程序,但是我们那是个完整的网站应用。

php在设备上运行的很慢,但是通过合并php文件(减小IO),使用apc(缓存opcode和一些数据和页面),访问速度有所提升。

但是,每次访问设备里面的网站时,php-fpm的cpu能瞬间占用到40%左右,不访问页面后cpu占用会降下来。因为设备中还运行了一下其他服务和程序,当php-fpm占用过多cpu后,会引起其他程序出现问题。

为什么php-fpm会占用那么多cpu?apache也没有占多少,有没有办法让cpu降下来。

本来有想过用一些嵌入式的web服务器,但是感觉cpu占用不是apache的问题,是php的问题,不知道如何处理。友友们又没有什么建议和想法?

PS:设备中的网站只有一个用户访问也会这样。

如果apache,mysql,php什么的都挤在一个嵌入式设备里,很可能是内存不够了或者是缓存的空间被挤占,导致每次访问都会触发大量page fault。

另一种可能是pm设置成了ondemand或其他非固定算法,使得php-fpm不断花时间启动新的php进程。

我没记错的话,PHP-FPM收到请求后,默认会循环在worker列表里找下一个空闲的worker,而不是重用旧的。如果你开了10个worker,可能新worker已经给交换出内存了。

建议降低php-fpm spawn的worker数量。对于单核处理器,mysql又部署在同一设备上的情况,甚至一个worker就够了。(无需I/O等待的时候,开再多的worker也只是瓜分早就100%占用的CPU而已,还会创造无谓的context switch。)

嵌入式要用apache + php建议直接用mod_php。可能的话换成lighttpd + php-fcgi应该更快。

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template