我正在为我的公司运行一个 WEB 应用程序(PHP + MariaDB),在我的笔记本电脑上开发并在专用服务器上运行生产版本。
最近,我开始测量性能,发现我的笔记本电脑性能比服务器更好。例如,其中一个页面在我的笔记本电脑上生成时间约为 50 毫秒,而在服务器上生成时间约为 130 毫秒。此时间在 PHP 代码中使用 microtime() 测量,因此忽略了服务器的网络请求延迟。
问题是,服务器在每一个方面都应该比我的笔记本电脑表现更好。130ms 对于这个应用程序来说已经足够了,这就是我从未注意到这个事实的原因。但如果可能的话,我想了解是什么原因造成的。
我想下一步应该是测量代码不同点的时间,但差异非常重要(> x2.5),我不禁想到我遗漏了一些东西。
以下是一些细节。
中央处理器
- 笔记本电脑:英特尔(R) 酷睿(TM) i5-5200U CPU @ 2.20GHz
- 服务器:英特尔(R) 至强(R) CPU E3-1270 v6 @ 3.80GHz
内存
- 笔记本电脑:16 GB DDR3 @ 1600MHz
- 服务器:32 GB DDR4 @ 2400MHz
操作系统
两者都运行 Debian 9,因此它们运行相同版本的 Apache2、PHP、MariaDB……并且应该以大致相同的方式进行配置。
玛拉雅数据库
在服务器上,它配置为使用 24GB RAM,用于 InnoDB 池大小,分为 12 个实例(所有表都使用 InnoDB)。目前,它只使用 4.5GB RAM,因此磁盘访问应该不是问题。
还有什么?
- 交换使用量为空
- CPU 大部分时间处于空闲状态
- 具体来说,测量是在没有其他人使用该应用程序时进行的
- 服务器正在运行其他服务(例如 git、其他 WEB 应用程序),这些服务不应该对性能产生如此大的影响,尤其是在 CPU 使用率较低的情况下