在一个使用Code Igniter 3.0.1开发的项目中,访问SQL_server 2008数据库时,当使用"真实"数据库时,我的响应时间非常糟糕。(为任何页面提供>5秒)。
在几个测试环境中测试的同一项目运行良好,输出时间为"正常"(<1秒)。
所以我认为真实数据库存在一些性能问题。但其他数据库应用程序似乎都没有任何性能问题。Real DB管理员说:"我们的数据库一切都很好。没有其他人有任何问题
我被卡住了。不知道还能尝试什么。
如何调试以找出性能问题所在?如有任何帮助或提示,我们将不胜感激。
使用的工具和环境的详细版本:
真实环境:Web服务器:windows 7上的XAMPP 5.5.30。数据库服务器:Windows server 2008 R2 Standard上的SQL_server 2008。
几个测试环境:Web服务器:在windows 7和windows 10上使用相同的XAMPP 5.5.30。还使用旧的XAMPP版本进行了测试。数据库服务器:SQL_server 2008 Express和SQL_server 2014 Express。在窗口7和窗口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这样的评测器是否能像查询一样深入)
- 确保数据库的索引和结构正确(在我看来,这是最有可能的,因为问题出在数据库调用上)