トラブルシューティング

Data too long for column 'hogehoge' at row 1

カラムのサイズを超えた大きさのデータを投入しようとした。
例えば、text型(65,535KBまで)に、100KBのデータを挿入しようとした場合。
→対応:投入するデータにあった型に変更・・・TEXTからMEDIUMTEXTやLONGTEXTへ
MySQL :: MySQL 5.1 リファレンスマニュアル :: 10.5 データタイプが必要とする記憶容量

Got error 139 from storage engine

InnoDBの制約にひっかかった。
例えば、TEXT型カラムが大量にあるテーブルに一定以上のデータを投入した。

ARCHAR、BLOB そして TEXT カラム以外の最大行長は、データベース ページの半分よりも少し短いです。これは、最大行長は約8000バイトであるという事です。LONGBLOB と LONGTEXT カラムは4GB 以下である必要があり、BLOB と TEXT カラムを含んだ合計行長は4GB 以下でなければいけません。InnoDB が行内の VARCHAR、BLOB、または TEXT カラムの最初の768バイトを格納し、残りは別のページに格納されます。

→対応:MyISAMに変更する、カラム数を削減する(1カラムにシリアライズして投入するなど)
MySQL :: MySQL 5.1 リファレンスマニュアル :: 13.5.16 InnoDB テーブル上の制約

show process list で大量のコネクションが接続待ち

WEB、DBの2台構成で、DBからWEBのホスト名の逆引きができない状態だった。
→WEBからの接続を受け付ける時にDNSの逆引きが発生するが解決できない
→接続数が多くなった場合に負荷が大きくなり顕在化
→(1)ホスト名が逆引きできるようにする、(2)MySQLのホスト名逆引きを無効にする
→今回は(2)で対応。/etc/my.cnfに以下を追加

skip-name-resolve

via.MySQL :: MySQL 5.1 リファレンスマニュアル :: 4.2.2 コマンド オプション
via.MySQL :: MySQL 5.1 リファレンスマニュアル :: 6.5.6 MySQLの DNS の使用