我的问题是,我的 Symfony 应用程序在Apache/2.4.6 (CentOS) PHP/5.6.31 MySQL 5.7.19 的远程计算机上运行,无法处理并发请求。这意味着当同时请求两个不同的页面时。第一个必须先完成,然后才能渲染第二个。
我在同一服务器上有一个用普通 Php 编写的另一个站点,它可以同时渲染尽可能多的页面(它使用已弃用的 mysql 连接,而不是像 Doctrine 这样的 pdo)。
也就是说,我做了以下测试:我插入了 sleep(3); 在我的 DefaultController 处。我请求了该页面,同时请求了另一个页面。请参阅下面的两个分析器:
睡眠页面(称为第 1 页):
没有睡眠的页面(称为第二页)。

正如你所看到的,Symfony 的 Http Firewall 占用了第二个页面的所有时间来加载。我的猜测(可能很愚蠢)是,第一个操作保留数据库连接,只有在完成它之后,它才会放手让其他请求使用它。尤其是与 Doctrine 使用 PDO 连接有关的事情。
顺便说一句,我已经阅读过帮助和文章,例如: - Symfony 防火墙在做什么,需要这么长时间? -为什么构建 PDO 连接很慢? - https://www.drupal.org/node/1064342
PS 我尝试在 apache 配置中使用 app.php 和 app_dev.php 没有任何改变。坚持使用 app_dev.php,这样我就可以使用分析器。使用 Symfony 内置服务器的本地开发具有相同的结果