1、业务性能一般都不是出在语言上,不然疯狂加服务器就行了,前面两位做过技术管理的朋友回答的不错;
2、一切抛开指标所说的性能优化都是啥扯蛋,不涉及复杂运算,不是做视频处理分析,如果单纯的做 web 开发,php 根本不存在性能问题,互联网应用属于 io 密集型系统,性能在 io 上,如数据库的高并发写入;
3、在业务迅速发展时,php 语言开发的系统所面临的性能问题,一般表现是服务经常 502 响应,卡顿等,往往是牵一发而动全身,一挂全挂;
4、那么怎么解决以上问题呢?
(1)先定位出是哪里出了问题,是进程配置数量不合理,还是数据库支撑不了,还是其他问题?是读压力过大了,还是写压力过大了,如果是读压力过大,看能否上 cdn 和各种缓存组件,如果是写入压力过大看能否进行异步化处理;
(2)分析系统是否达到最大负载了,如果没,请先调整你的进程分配数量,分析慢执行原因;最好设置好进程隔离,针对不同的 url 模块分配不同的 fpm 进程,防止一挂全挂;
(3)如果是数据库问题,那么可以进行读写分离,搭建数据库集群,读压力可以随机读取从裤进行负载均衡,如果是写压力过大,就只能进行拆分了;
5、以上只是简单的针对单一系统的简单分析处理,对于很多单一 php 系统够了,对于高并发、高可用,微服务是一个很大的课题,而且会涉及组织架构问题,这里不展开讨论;
6、最后,很多人说换 java,那么换了 java 是不是就能解决互联网高并发场景下带来的问题呢?其实 java 语言本身是不能的,但他的生态可以,本人就是从 php 转到 java 的,这里面最大的感受是,java 系确实会比 php 系故障率低很多,它有一整套完善的编译自动化测试流程,语法上的错误真的很难出现,但 php 犯低级错误的开发人员经常有,java 的组件很成熟稳定不容易出错,php 相对较少经常要造轮子容易导致故障,java 的人才相对更多好招,其实很多 php 童鞋估计都不理解幂等,但对 java 是非常基础,他们一般接受过正规大学教育;
7、不管什么语言开发,都会面临业务快速发展所带来的高并发场景下性能问题,高可用问题;这个时候需要的是技术管理和技术架构的变化,包括核心模块的拆分下沉,服务监控,运维,测试等都要能跟上等;这看起来像是技术问题又不仅仅是技术问题…