8GBのRAMとMySQL5.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]
コメントを追加