大規模なAmazonRDSインスタンスで実行されているMySQLデータベースにすべての永続データを保存するFacebookゲームがあります。テーブルの1つは2GBのサイズです。そのテーブルで数秒以上かかるクエリを実行すると、ゲームによって実行されたSQLアクションはすべて次のエラーで失敗します。
HTTP / 1.1 503サービスを利用できません:バックエンドサーバーの容量が不足しています
これは明らかに私たちのゲームをダウンさせます!
これらの期間中、RDSインスタンスのCPU使用率を監視しました。スパイクは発生しますが、50%を超えることはありません。以前はインスタンスサイズが小さく、100%に達したので、問題にCPU容量を増やすだけで解決できると期待していました。今では、開いている接続の数に問題があると思います。ただし、SQLを使用してから8か月ほどしか経っていないため、MySQL構成の専門家ではありません。
これらのクエリがサーバーに過負荷をかけないように変更できる構成設定はありますか、それともゲームの起動中に実行しないようにする必要がありますか?
MySQLWorkbenchを使用してクエリを実行しています。
どんな助けでも大歓迎です-ありがとう!
編集:
これが例です...
SELECT *
FROM BlueBoxEngineDB.Transfer
WHERE Amount = 1000
AND FromUserId = 4
AND Status='Complete';
テーブルは次のようになります。
TransferId Started Status Expires FromUserId ToUserId CurrencyId Amount SessionId
1177 2012-06-04 21:43:18 Added 150001 2 4 1 12156
1179 2012-06-04 21:48:50 ISF 150001 2 4 1 12156
1181 2012-06-04 22:08:33 Added 150001 2 4 25 12156
1183 2012-06-04 22:08:41 Complete 150001 2 4 50 12156
1185 2012-06-04 22:08:46 Added 150001 2 4 200 12156