如何在处理多个同时请求时稳定PHP响应时间


How to stabilise PHP response times when dealing with multiple simultaneous requests?

我正在构建一个带有API的PHP应用程序,该应用程序能够非常快速地(在100ms内)响应所有请求,并且必须能够每秒处理多达200个查询(请求是JSON格式的,每次响应都需要DB查找+保存)。我的代码运行速度很快(非常稳定地在30ms左右),可以处理单个请求,但一旦它每秒必须响应多个请求,响应时间就会开始到处跳跃。

我不认为这是内存问题(PHP的内存限制设置为128MB,代码的内存使用量仅为3.5MB左右)或MySQL问题(任何数据库请求之前的代码都可能像与数据库交互的位一样成为瓶颈)。

因为时间非常重要,我需要尽可能地保持响应时间的一致性。因此,我的问题是:在处理多个同时请求时,我能做一些简单的调整(对php.ini或Apache)来稳定php的响应时间吗?

根据我的经验,在服务器中,瓶颈最慢(最容易修复)的事情之一是文件系统和硬盘驱动器。我认为加快这一进程将在所有其他领域有所帮助。例如,您可以升级httpdocs和数据库所在的硬盘驱动器。例如,您可以将其放在SSD驱动器上。或者甚至制作一个RAM磁盘并将所有文件放在上面

或者,您可以设置数据库,使其在内存存储引擎之外运行。(此处也有相关信息)

当然,尽管如此,你还是需要大量的物理记忆。同样重要的是要注意,如果你的网络/应用程序托管被共享,那么你的共享内存就会出现问题。

调整Mysql

调整Apache

性能调整PHP

启用Zend Optimizer,或查看APC或eAccelerator

以下是来自IBM的一些基本LAMP调整提示

这里有一个幻灯片,里面也有一些好的建议