MySQL「Sort aborted」エラー
使用頻度の低いサーバーで下記のエラーが上がっていました
$ tail /var/log/mysqld.log 260422 2:59:54 [ERROR] /usr/libexec/mysqld: Sort aborted 260422 3:31:42 [ERROR] /usr/libexec/mysqld: Sort aborted 260422 3:41:22 [ERROR] /usr/libexec/mysqld: Sort aborted 260422 3:44:41 [ERROR] /usr/libexec/mysqld: Sort aborted
エラー内容ですが、Sort aborted ですので、該当サーバー上で実行されている MySQL(MariaDB)において、複雑なクエリやメモリ不足、あるいは sort_buffer_size の不足などでソート処理が中断された場合に発生します
調査ステップ:まずはシステムリソースの確認
メモリ不足が疑わしいのでメモリを確認しましたが、メモリ不足を思われせる値ではありません
$ free -m
total used free shared buffers cached
Mem: 11912 8447 3464 0 245 6733
-/+ buffers/cache: 1468 10443
Swap: 4095 0 4095
「Sort aborted」が起こる主な原因
メモリに余裕がある場合、以下の「MySQL内部の設定・制限」が原因である可能性が高い。頻発しなければ様子見で大丈夫無ことが多いのでしばらく様子を見ることにする
sort_buffer_sizeの超過- 1クエリに割り当てられるソート用バッファが、実際のデータ量に対して小さすぎる場合に発生。
- 一時ファイル(tmpdir)の容量不足
- メモリ内でソートしきれない場合、ディスク上の
/tmpを使用するが、そこが溢れているケース。
- メモリ内でソートしきれない場合、ディスク上の
- クライアント側のタイムアウト
- 処理に時間がかかりすぎて、呼び出し側のプログラム(PHP等)が先にコネクションを切断した。

