Php并发到底是谁处理不过来?

我们经常说的并发 就是多人同时访问一个网站
那假设是lnmp环境。到底是nginx处理不过来请求?还是php还是mysql还是linux? 还是说其实就是内存消耗了? 还有这个并发要怎么去模拟?并行的东西
请大神通俗点记解答

阅读 2.4k
4 个回答

高并发的处理涉及到很多内容,数据库的优化,php-fpm的设置,队列的使用,缓存机制,合理的服务器配置,想知道服务器的处理能力就做一下压测,压测一般使用ab或者jmeter做

主要还是php不是常驻内存,每一个请求都需要加载一堆的代码,配置,不支持原生连接池等等(不过目前已经有很多解决方案,例如开opcache,使用swoole让代码常驻内存,连接池等等)

一般情况下分为IO消耗和CPU消耗吧。

IO就是指读取数据库、本地文件或者发起接口请求这些,一般的网站会卡在数据库这一块。

CPU一般指的是计算,比如程序需要大量计算某些东西。

这些东西被卡主的话,会导致请求一直无法释放,而一般来说,一个服务器能同时处理的请求是有上限的,这样就会出现大量请求同时访问时,无法得到处理的问题。

一般来说,除非你代码真的乱七八糟,出现性能问题的,主要是数据库,代码层面一般问题不大,就算有性能问题,最直接的就是集群部署,就可以解决问题了。只是当你项目很大以后,PHP对资源的利用可能不到位而已,然后单机提供的能力不行而已,假如各种优化方案都用过以后,那就只能考虑重构项目,或者用其他语言去解决了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题