热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

目前手头上现在有个项目,是在一个装有linux系统的嵌入式设备里面跑一个网站。设备的CPU是RAM结构,单核,1GB。我们在系统里面架设了Apache+Mysql+php,然后写个网站,放在里面运行。感觉有点类似于路由器里面...
目前手头上现在有个项目,是在一个装有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应该更快。

推荐阅读
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
author-avatar
曦雯天使
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有