CentOS 5.10 32bit系统。
从图片上可以看到,
启动了一个proftpd,一个memcached,
一个mysqld,一个nginxd,5个apache,这三个说的都是工作进程,除了工作进程还有一个master进程。
发这个帖子是因为很多人误解,以为lnamp比lnmp多了个a就会多占用内存,严格来说,如果要对照lnamp的写法,lnmp应该写作为lnmpp,这二个p分别为php-fpm和PHP,php-fpm的作用相当于lnamp中的apache。
脚本安装地址
http://www.server110.com/lnamp/
FAQ1,为什么说Apache比Nginx更耗内存?
要理解这个,首先得清楚,Apache干的活是处理HTTP请求并解析PHP,而Nginx只干处理HTTP请求的活,解析PHP通常要交给php-fpm(lnmp)或者apache(lnamp)来做。
而Apache通常用的模式是Prefork,也就是说,处理一个HTTP请求就要占用一个进程,而Nginx处理HTTP请求用的是线程,线程和进程这二者本身就无可比性。
从资源消耗上,lnamp=lnmp>lamp。稳定性上,个人觉得,apache>php-fpm。
可能有人会提到Worker和Event,多线程方式处理PHP解析,毫无稳定性可言。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
从您的描述中,可以看出您对LNAMP(Linux + Apache + MySQL + PHP)和LNMP(Linux + Nginx + MySQL + PHP)这两种服务器环境的内存使用情况有所疑问。下面我将基于阿里云产品和服务的角度,为您提供一些信息和建议。
Apache Prefork模式:如您所述,Apache在Prefork模式下为每个请求分配一个进程,这确实可能导致较高的内存占用,尤其是在并发请求较多的情况下。这是因为每个进程都有自己的内存空间,包括代码、数据段等,因此资源消耗较大。
Nginx:Nginx采用事件驱动模型处理请求,它本身不直接解析PHP,而是通过FastCGI协议将PHP请求转交给php-fpm处理。这种设计使得Nginx能够以较少的系统资源处理大量并发连接,从而在理论上比Apache Prefork模式更节省内存。
LNMP(Nginx + PHP-FPM):由于Nginx的高效和轻量级,以及PHP-FPM可以根据需要动态管理PHP工作进程,整体上通常比LNAMP配置更加节省内存,特别是在高并发场景下。
LNAMP(Apache + PHP模块/PHP-FPM):虽然Apache可能在某些配置下(如Worker或Event MPM)减少内存占用,但总体上,由于其进程模型,在资源效率上通常不如LNMP配置。然而,Apache的稳定性和丰富的模块支持也是其优势之一。
ECS实例选择:如果您计划部署LNMP或LNAMP,根据预期的访问量和资源需求,合理选择ECS实例规格。对于高并发应用,推荐使用性能更好的实例类型,并考虑使用SSD云盘以提高IO性能。
负载均衡SLB:如果预计会有大量并发访问,可以考虑使用阿里云的负载均衡服务SLB,它可以有效分摊流量,提升系统的可用性和稳定性。
云数据库RDS:为了进一步优化性能和管理便利性,推荐使用阿里云RDS作为MySQL数据库服务,它提供了自动备份、恢复、监控等功能,减轻运维负担。
对象存储OSS:如果涉及到静态文件存储,可以考虑使用阿里云OSS,它提供高可用、低成本的存储解决方案,减轻服务器存储压力。
监控与报警:利用阿里云云监控服务,实时监控服务器及应用状态,设置报警规则,及时发现并解决问题。
综上所述,选择LNMP还是LNAMP架构,应基于实际应用场景、资源预算、维护成本等因素综合考虑。阿里云提供了灵活多样的产品组合,可以帮助您构建高效、稳定的服务器环境。