广州优网科技成立于2001年。创意设计、

-pool

有什么好处呢?默认情况下,PHP 只启用了一个池,所有请求均在这个池中执行。一旦某些请求出现拥堵之类的情况,那么很可能会连累整个池出现火烧赤壁的结局;如果启用多个池,那么可以把请求分门别类放到不同的池中执行,此时如果某些请求出现拥堵之类的情况,那么只会影响自己所在的池,从而控制故障的波及范围。

listen

虽然 Nginx 和 PHP 可以部署在不同的服务器上,但是实际应用中,多数人都习惯把它们部署在同一台服务器上,如此就有两个选择:一个是 TCP,另一个是 Unix Socket。

-listen

和 TCP 比较,Unix Socket 省略了一些诸如 TCP 三次握手之类的环节,所以相对更高效,不过需要注意的是,在使用 Unix Socket 时,因为没有 TCP 对应的可靠性保证机制,所以最好把 backlog 和 somaxconn 设置大些,否则面对高并发时会不稳定。

pm

进程管理有动态和静态之分。动态模式一般先启动少量进程,再按照请求数的多少实时调整进程数。如此的优点很明显:节省资源;当然它的缺点也很明显:一旦出现高并发请求,系统将不得不忙着 FORK 新进程,必然会影响性能。相对应的,静态模式一次性 FORK 足量的进程,之后不管请求量如何均保持不变。和动态模式相比,静态模式虽然消耗了更多的资源,但是面对高并发请求,它不需要执行高昂的 FORK。

-pm

对大流量网站而言,除非服务器资源紧张,否则静态模式无疑是最佳选择。

pm.max_children

启动多少个 PHP 进程合适?在你给出自己的答案之前,不妨看看下面的文章:

php-fpm的max_chindren的一些误区

Should PHP Workers Always Equal Number Of CPUs

一个 CPU 在某一个时刻只能处理一个请求。当请求数大于 CPU 个数时,CPU 会划分时间片,轮流执行各个请求,既然涉及多个任务的调度,那么上下文切换必然会消耗一部分性能,从这个意义上讲,进程数应该等于 CPU 个数,如此一来每个进程都对应一个专属的 CPU,可以把上下文切换损失的效率降到最低。不过这个结论仅在请求是 CPU 密集型时才是正确的,而对于一般的 Web 请求而言,多半是 IO 密集型的,此时这个结论就值得商榷了,因为数据库查询等 IO 的存在,必然会导致 CPU 有相当一部分时间处于 WAIT 状态,也就是被浪费的状态。此时如果进程数多于 CPU 个数的话,那么当发生 IO 时,CPU 就有机会切换到别的请求继续执行,虽然这会带来一定上下文切换的开销,但是总比卡在 WAIT 状态好多了。

那多少合适呢?要理清这个问题,我们除了要关注 CPU 之外,还要关注内存情况:

-PHP Memory

如上所示 top 命令的结果中和内存相关的列分别是 VIRT,RES,SHR。其中 VIRT 表示的是内存占用的理论值,通常不用在意它,RES 表示的是内存占用的实际值,虽然 RES 看上去很大,但是包含着共享内存,也就是 SHR 显示的值,所以单个 PHP 进程实际独立占用的内存大小等于「RES – SHR」,一般就是 10M 上下。以此推算,理论上 1G 内存能支撑大概一百个 PHP 进程,10G 内存能大概支撑一千个 PHP 进程。当然并不能粗暴认为越多越好,最好结合 PHP 的 status 接口,通过监控活跃连接数的数量来调整。

责任编辑:优网技术部

版权所有:http://www.uweb.net.cn (优网科技) 转载请注明出处

品牌 read.php,优网科技高级程序员关于PHP优化知识分享相关推荐

  1. java高级内容_Java高级程序员必备的内容知识

    一段时间没有回顾多线程相关知识了,虽然工作中会用到一些多线程的内容,但都偏向于基础,今天java培训带大家重读多线程相关内容,发现有些东西还是需要注意下.这些一般是面试高频问题奥. 了解并发的内幕是一 ...

  2. JAVA初/中/高级程序员必须知道的知识

    面试题模块介绍 我们这份面试题,包含的内容了十九了模块:Java 基础.容器.多线程.反射.对象拷贝.Java Web 模块.异常.网络.设计模式.Spring/Spring MVC.Spring B ...

  3. 想成为高级程序员MYSQL的那些知识你需要全懂

    MySql常用命令 登录mysql mysql -u username -p 数据库授权 grant all privileges on *.* to iCache@'192.168.101.221' ...

  4. 2002年高级程序员考试总结及经验

    2002年高级程序员考试总结及经验 2002年高级程序员考试总结及经验 出处 我今年10月13日参见了计算机水平考试的高级程序员级别考试﹐当时报考的目的是想通过资格考试,获得工程师职称,就不用准备大量 ...

  5. 如何从初级程序员顺利晋升到高级程序员?

    文共3080字,预计学习时长9分钟 来源:Pexels 按经验级别划分的软件开发人员可能如下: · 初级:拥有两到三年的经验 · 高级:拥有十年以上的经验 · 中等或 "中级水平" ...

  6. Java高级程序员面试经历

    我80年出生,05年毕业到现在已经快12年了,如果一直在技术上辛勤耕耘,足够的努力,加上多年的技术经验累积,这个年纪混到架构师级.技术总监甚至CTO还是有可能的.不过因为我自己的经历有点特别,2011 ...

  7. 为什么3年的Java高级程序员薪水仅仅8k-10k,而一个Linux底层C语言程序员两年经验就敢要1...

    为什么80%的码农都做不了架构师?>>>    为什么3年的Java高级程序员薪水仅仅8k-10k,而一个Linux底层C语言程序员两年经验就敢要10k的薪水?   由于目前国内嵌入 ...

  8. 解密初、中、高级程序员的进化之路

    程序员的标准与要求 初级程序员 仅能完成简单模块和项目的开发工作,难以胜任复杂模块的开发.通常是入行不久, 1 年及以下工作经验的同学. 能力要求 熟悉前端基础知识如 HTML.JS.CSS . 能够 ...

  9. 高级程序员值得一看的33本编程书籍

    作为一名程序员,编程语言只是基础,只是工具,想实现从程序员到高级工程师的进步,需要花更多的精力在底层原理,算法,数据结构,编程思想上.推荐了33本高级程序员值得一看的书籍,注重底层知识,思想,用空的时 ...

  10. 从码奴到码神之路--初级到中级再到高级程序员的进化之路

    一.初级->中级 通常在初级这个阶段,是进步空间最大的阶段,这个阶段是不存在天花板. 编码:编码是初级阶段最需要经常做的事情,古话说孰能生巧,写代码也是同样的道理. 写什么样的代码 在公司要多做 ...

最新文章

  1. Semaphore信号量
  2. vue 高阶面试题_高级Web前端工程师面试之Vue问题汇总解析
  3. 移动前端开发经验小结
  4. 网页设计中的默认字体样式详解
  5. 抖音xgorgon04参数
  6. python读写磁盘扇区数据_C++-如何直接读取Windows磁盘扇区的数据?
  7. es管理kabina_ES和Kibana在Linux上的安装
  8. 如此轻松就能搭建聊天机器人,我也要弄一个~
  9. C/C++ 进程间通信 管道
  10. 两个excel表格信息合并 自动匹配_别再复制黏贴了,合并两个Excel表格可以很简单!...
  11. Java实例化类的几种方法
  12. 天正自定义填充图案怎么添加_cad里怎么增加自定义填充图案
  13. synchronized偏向锁
  14. mac定时备份mysql_定时备份mysql数据库
  15. blastn 输出结果每列啥意思_本地blast的详细用法
  16. 计算幻术之路(二):增强现实的现实
  17. html网页多人聊天,html5+js+.Net的即时多人聊天
  18. 涅槃重生,力荐大型分布式手册,凤凰架构让你浴火成神,良心分享
  19. 敏捷个人2012.3月份线下活动报道:活出我的价值
  20. 打造Ai作图studio需要哪些工具

热门文章

  1. 每天1分钟 经济学小知识
  2. 2022茶艺师(初级)试题及在线模拟考试
  3. 外接圆、内切圆半径公式及对应关系知识点总结
  4. 上瘾啦,又用 Python 制作销售数据可视化看板
  5. 2019软科【世界一流计算机学科排名】公布!
  6. Android APK反编译得到Java源代码和资源文件
  7. 9、IPA通路分析相关网页教程
  8. 计算机查看正在运行的程序,win7系统查看当前正在运行程序状态的方法
  9. Windows 10 微软拼音输入法无法输入中文标点符号
  10. 分享一款光谱分析软件(离线分析软件,导入光谱数据即可分析),功能超级多,超级强大,计算荧光量子效率,发射光谱的拉曼峰,计算共振能量转移(FRET)效率等