Symfony,性能失败.在一条路径上运行繁重的脚本时,其他路径变得不可访问



今天我们在Symfony应用程序中发现了一个问题。我们做了一个简单的压力测试,它失败了。 在我们的控制器中,我们有一个呈现从数据库返回的记录的函数。 所以只是为了测试,我试图用循环堵塞系统,

this function runs at path {baseurl}/countries
//$countries fetches all records from the "countries" table
for($i = 0; $i<=200000; $i++) {
foreach ($countries as $country) {
echo $country . '<br>';
}
}

循环这个数组 200 万次,当它运行时,我们尝试访问同一个 symfony 中的其他路径,这只不过是从控制器渲染的静态树枝模板。但即使渲染它,也需要很长时间才能做到。

访问{baseurl}/register仅包含静态 html 表单。

已检查是否有任何语法错误。没有一个在那里 根据此更改了我的OPCache设置。重新启动服务器,重新启动PC。没有任何改善。

我该怎么办,这不是我的 apache 问题,我尝试使用我的 Apache 访问其他站点,它加载正常。Htop只显示 apache 使用了 13% 的 CPU,但我的 symfony 应用程序在执行一个脚本时,其他路径变得非常无法访问。 我不确定该怎么办,因为这不是我的 PC 资源问题,而是框架性能问题。这个问题正常吗?

这是由PHP的"会话锁定"方式引起的 https://ma.ttias.be/php-session-locking-prevent-sessions-blocking-in-requests/

# code copied from link above
<?php
...
// This works in PHP 5.x and PHP 7
session_start();
$_SESSION['something'] = 'foo';
$_SESSION['yolo'] = 'swag';
session_write_close();
// Do the rest of your PHP execution below

基本上,如果您不想收到非阻塞请求,则应在继续进行繁重处理之前关闭会话。

相关内容

最新更新