我们有一个专用服务器,带有8GB的RAM和带有MySQL 5.1的PHP5.3。
最多大约有500个并发连接,每个连接在较小的表上使用用户数据执行1-2个SELECT查询,然后在大表中执行INSERT transactions
。选择查询不会花费太多,我们在每个查询之间添加了监视功能,以查看每个查询的响应时间,并且永远不会出现问题。
我们在代码中添加了跟踪功能,有时甚至导致一些简单的INSERT查询需要14-15秒。下面列出的查询有时需要14秒,有时需要6秒,有时需要0.2秒或更短。可能是什么问题?
有时会返回这些巨大延迟的PHP代码:
$starT = microtime(true);
echo '×tampTS_02='.(microtime(true) - $startT);
mysqli_query($GLOBALS['con'],"INSERT INTO `transactions` (`id`,`data`) VALUES('id','some_data')") or die(mysqli_error($GLOBALS['con']));
echo '×tampTS_03='.(microtime(true) - $startT);
transactions
到目前为止,该表有大约200万个条目。
CREATE TABLE IF NOT EXISTS `transactions` (
`id` int(11) NOT NULL,
`data` varchar(1000) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
您的表可能已被锁定以进行其他处理。这可能是硬件问题(硬盘驱动器寿命长或使用寿命短),软件或推测性问题(共享系统中的服务器速度慢)。
您可以看到什么用 show processlist
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句