Php Laravel查询延迟和';会议';查询数据库';文件';司机使用
我目前正在为一个项目使用Laravel,我的web服务器最近开始在页面加载时运行得非常慢,因此每个页面在加载前可能需要8秒钟 到目前为止,我已经确定缓慢不是由以下原因造成的:Php Laravel查询延迟和';会议';查询数据库';文件';司机使用,php,mysql,laravel,laravel-5.1,Php,Mysql,Laravel,Laravel 5.1,我目前正在为一个项目使用Laravel,我的web服务器最近开始在页面加载时运行得非常慢,因此每个页面在加载前可能需要8秒钟 到目前为止,我已经确定缓慢不是由以下原因造成的: DNS问题;当我直接导航到服务器的IP地址时发生问题 阿帕奇问题;带有“PHPinfo()”的空白PHP文件会立即加载,不会有任何延迟 负荷;服务器的CPU使用率从未超过20% 按照上述步骤,问题只会出现在实时环境中,在这里,我的开发环境没有任何延迟的迹象 在分析一些缓存研磨日志后,我发现PDOStatement->e
- DNS问题;当我直接导航到服务器的IP地址时发生问题
- 阿帕奇问题;带有“PHPinfo()”的空白PHP文件会立即加载,不会有任何延迟
- 负荷;服务器的CPU使用率从未超过20%
PDOStatement->execute
调用占用的延迟量最大
然后,我启用了long\u query\u time
登录MySQL以进一步确定问题。我的调查结果表明,我的大多数查询执行得很快,不到一秒钟;然而,我发现执行的任何site\u会话
查询都要花费6秒钟的时间才能执行
作为进一步的故障排除步骤,我尝试将我的会话
驱动器临时更改为文件
,而不是数据库
;但是,我发现在每次页面加载之后仍在执行以下查询:
# Time: 150813 23:37:12
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 3.035622 Lock_time: 0.000022 Rows_sent: 0 Rows_examined: 1
SET timestamp=1439509032;
update `site_sessions` set `payload` = 'YTo1OntzOjY6Il90b2tlbiI7czo0MDoibHk0YVo2MG16c09acTBTSnVnYUlJVTFNM0VrU3B2ekdiRFJyYmRzWiI7czo5OiJfcHJldmlvdXMiO2E6MTp7czozOiJ1cmwiO3M6MjY6Imh0dHA6Ly93d3cuY29ycGxlYWd1ZXMuY29tIjt9czo1OiJmbGFzaCI7YToyOntzOjM6Im9sZCI7YTowOnt9czozOiJuZXciO2E6MDp7fX1zOjM4OiJsb2dpbl84MmU1ZDJjNTZiZGQwODExMzE4ZjBjZjA3OGI3OGJmYyI7czoxOiIxIjtzOjk6Il9zZjJfbWV0YSI7YTozOntzOjE6InUiO2k6MTQzOTUwOTAyODtzOjE6ImMiO2k6MTQzOTQ5Nzc5MjtzOjE6ImwiO3M6MToiMCI7fX0=', `last_activity` = '1439509029' where `id` = 'ba62f70745c5455611c3fe3bf008fa213c22a7f9';
# Time: 150813 23:37:27
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 1.071487 Lock_time: 0.000026 Rows_sent: 0 Rows_examined: 1
SET timestamp=1439509047;
update `site_sessions` set `payload` = 'YTo1OntzOjY6Il90b2tlbiI7czo0MDoiOGhiVVVobTFjTERrU1ZXR25weTdMWHlQRlMzTmtkOWhIZzFSdHQ1QSI7czo5OiJfcHJldmlvdXMiO2E6MTp7czozOiJ1cmwiO3M6MjY6Imh0dHA6Ly93d3cuY29ycGxlYWd1ZXMuY29tIjt9czo1OiJmbGFzaCI7YToyOntzOjM6Im9sZCI7YTowOnt9czozOiJuZXciO2E6MDp7fX1zOjM4OiJsb2dpbl84MmU1ZDJjNTZiZGQwODExMzE4ZjBjZjA3OGI3OGJmYyI7czoxOiIxIjtzOjk6Il9zZjJfbWV0YSI7YTozOntzOjE6InUiO2k6MTQzOTUwOTA0NjtzOjE6ImMiO2k6MTQzOTUwNDQzODtzOjE6ImwiO3M6MToiMCI7fX0=', `last_activity` = '1439509046' where `id` = 'c3e95cf7c317ad340aa28c61bf323e008eaa5ff0';
有谁能解释一下这个问题,或者提供其他故障排除步骤来帮助我确定根本原因吗
非常感谢您的反馈
编辑
以下是表格状态
信息:
+--------------------------------------------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment |
+--------------------------------------------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+
| site_sessions | InnoDB | 10 | Compact | 18 | 910 | 16384 | 0 | 16384 | 10485760 | NULL | 2015-07-20 03:40:32 | NULL | NULL | utf8_unicode_ci | NULL | | |
+--------------------------------------------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+
我的session.php
文件:
<?php
return [
'driver' => env('SESSION_DRIVER'),
'lifetime' => 320,
'expire_on_close' => true,
'encrypt' => false,
'files' => storage_path().'/framework/sessions',
'connection' => null,
'table' => 'sessions',
'lottery' => [2, 100],
'cookie' => 'clgs_session',
'path' => '/',
'domain' => null,
'secure' => false,
];
需要注意的是,user\u id
字段帮助我确定哪些用户与每个会话关联,以便获得当前在线的用户列表。我从来没有遇到过这方面的问题
我是否可以执行其他故障排除步骤来确定慢速查询
谢谢您在会话表中的
id
列上有索引吗?另外,我们可以查看您的session.php
config文件吗?@Scopey我已经添加了所需的所有信息。谢谢
mysql> SHOW CREATE TABLE site_sessions;
CREATE TABLE `site_sessions` (
`id` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`payload` text COLLATE utf8_unicode_ci NOT NULL,
`last_activity` int(11) NOT NULL,
`user_id` int(10) unsigned DEFAULT NULL,
UNIQUE KEY `sessions_id_unique` (`id`),
KEY `sessions_user_id_index` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci