Yii2缓慢活跃的记录

时间:2017-11-07 12:06:22

标签: activerecord yii2

我有一个基于Yii2的网络项目。最近我给它写了一些REST API。 我已经意识到,每个REST API调用都有很长的响应时间。 1134ms,1250ms,1034ms等,所以基本上平均响应时间超过1秒。

客户端模型没有关系(客户表是一个独立的'表)。

我的测试表(客户端)包含173条记录(1行有10列)。我调试了问题并标记了相关的行:

    ...
    $client_id = Yii::$app->request->post('client_id');

    // client_id ellenőrzése (pl. blokkolt-e a mobil kliens)
    if (!empty($client_id)) {
        $client = Client::findOne($client_id);       <-----
    ...

到目前为止,我还没有配置任何缓存组件,因为我不认为需要具有173条记录的表。

如果没有提到的findOne()行,响应时间平均为30ms。 环境:

  • php 7,
  • Mysql 5.5,
  • Yii 2

应该是什么问题?有什么配置?几年前我用Yii 1.1开发了另一个项目,我没有记住那里的那种问题。

谢谢。

更新#1:

client table scheme

更新#2: 我注意到,每个活动记录的相关操作都需要大约1秒才能完成(不仅仅是与客户端相关的操作)。将10个项目添加到gridview,更新1个记录等。

更新#3: 好的,发生了一些奇怪的事情。我创建了一个非常简单的动作,也需要约1秒才能渲染:

public function actionTest() {
    echo "OK";
}

登录页面需要avarage 32ms才能加载。

1 个答案:

答案 0 :(得分:1)

好的,经过半天的搜索,我发现了问题和解决方案。 在我设法启动Yii调试工具栏(2小时:))之后我意识到了这一点:

Yii2 debug tool

花了几个小时后,我找到了解决方案。 我不得不更换这个配置行:

'dsn' => 'mysql:host=localhost;dbname=test',

'dsn' => 'mysql:host=127.0.0.1;dbname=test',

也许MySQL没有侦听IPv6套接字或其他配置导致此问题,但现在平均响应时间为53ms。