如何调试 code igniter 3 + sql_server 2008 上的不良性能

How to debug bad performance on code igniter 3 + sql_server 2008

在使用 Code Igniter 3.0.1 开发的项目中访问 SQL_server 2008 数据库时,我在使用 'real' 数据库时响应时间非常糟糕。 (服务任何页面 >5 秒)。

在多个测试环境中测试的同一个项目工作正常,输出时间为 'normal'(<1 秒)。

所以我想真实数据库存在一些性能问题。但是 none 其他数据库应用程序似乎有任何性能问题。真正的数据库管理员说 'Everything is fine with our database. No one else has any problem.'

我卡住了。不知道还能尝试什么。

如何通过调试找出性能问题所在? 任何帮助或提示将不胜感激。


使用的工具和环境的详细版本:

真实环境: Web 服务器:XAMPP 5.5.30 on windows 7。 数据库服务器:SQL_server 2008 on Windows Server 2008 R2 Standard。

几个测试环境: Web 服务器:在 windows 7 和 windows 10 上使用相同的 XAMPP 5.5.30。还使用旧的 XAMPP 版本进行了测试。 数据库服务器:SQL_server 2008 Express 和 SQL_server 2014 Express。在 windows 7 和 windows 8.

网络:在与XAMPP相同的计算机和不同的计算机中进行了测试。与真实环境同网测试,其他网络测试

DB 驱动程序:使用本机驱动程序连接到 sql_server:

$db['my_db_name'] = array(
    'dsn'    => '',
    'hostname' => 'my_server\SQLEXPRESS',
    'username' => 'xxx',
    'password' => 'yyy',
    'database' => 'zzz',
    'dbdriver' => 'sqlsrv',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => TRUE,
    'cache_on' => FALSE,
    'cachedir' => 'application/cache',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'autoinit' => TRUE,
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

有几种方法可以在本地开始研究这个问题:

  • 安装分析器(Xdebug 作为二合一功能)并使用缓存研磨查看器(phpStorm 支持这个,但还有其他工具)来查看瓶颈
  • 使用像 NewRelic 这样的 APM 深入研究不同的调用和查询(我不知道像 Xdebug 或 xhprof 这样的分析器是否像查询一样深入)
  • 确保数据库的索引和结构正确(在我看来这是最有可能的,因为问题出在数据库调用上)