Symfony,性能 fails.While 运行 一条路径上的脚本很重,其他路径变得无法访问
Symfony, performance fails.While running heavy script on one path, other paths become inaccessible
今天我们在 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 表单。
已检查是否有任何语法错误。 None 在那里
根据 this 更改了我的 OPCache 设置。重启服务器,重启电脑。没有任何改善。
我该怎么办,这不是我的 apache 问题,我尝试使用我的 Apache 访问其他站点并且加载正常。 Htop
仅显示 apache 使用了 CPU 的 13%,但我的 symfony 应用程序在执行一个脚本时,其他路径变得难以访问。
我不确定该怎么做,因为这不是我的 PC 资源问题,而是框架性能问题。这个问题正常吗??
这是PHP的"Session Locking"方式造成的
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
基本上,如果您不希望有非阻塞请求,您应该在继续进行繁重的处理之前关闭会话。
今天我们在 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 表单。
已检查是否有任何语法错误。 None 在那里 根据 this 更改了我的 OPCache 设置。重启服务器,重启电脑。没有任何改善。
我该怎么办,这不是我的 apache 问题,我尝试使用我的 Apache 访问其他站点并且加载正常。 Htop
仅显示 apache 使用了 CPU 的 13%,但我的 symfony 应用程序在执行一个脚本时,其他路径变得难以访问。
我不确定该怎么做,因为这不是我的 PC 资源问题,而是框架性能问题。这个问题正常吗??
这是PHP的"Session Locking"方式造成的 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
基本上,如果您不希望有非阻塞请求,您应该在继续进行繁重的处理之前关闭会话。